我正在尝试编写一个程序,通过尺寸对特定文件夹中的图像进行排序,并通过简单的.NET控制台应用程序将小图像移动到另一个文件夹.我决定使用System.Drawing.Image类从图像文件中获取图像尺寸.但我面临以下错误:
找不到类型或命名空间名称"Image"(您是否缺少using指令或程序集引用?)
究竟我做错了什么以及为什么它没有看到这堂课?以下是我的程序的完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Drawing;
namespace ImageSort
{
class Program
{
static void Main(string[] args)
{
string targetPath = @"d:\SmallImages";
string[] files = Directory.GetFiles(@"d:\Images");
foreach (string path in files)
{
if (File.Exists(path))
{
Image newImage = Image.FromFile(path);
var Width = (int)(newImage.Width);
var Height = (int)(newImage.Height);
if (Width * Height < 660000) {
System.IO.File.Move(path, targetPath);
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我需要在其中使用以下通用类和方法ParseFrom():
public sealed class MessageParser<T> : MessageParser where T : IMessage<T>
{
public MessageParser(Func<T> factory); //constructor
public T ParseFrom(byte[] data);
}
Run Code Online (Sandbox Code Playgroud)
现在,我在编译时不知道这个类的参数类型,所以我使用类型反射和MakeGenericType()方法来做到这一点:
//Assuming itemInstance is given as input parameter
Type typeArgument = itemInstance.GetType();
Type genericClass = typeof(MessageParser<>);
var genericType = genericClass.MakeGenericType(typeArgument);
var instance = Activator.CreateInstance(genericType);
Run Code Online (Sandbox Code Playgroud)
它给了我一个运行时错误: MessageParser<> 没有无参数构造函数。但是当我尝试Func<T> factory作为参数传递时CreateInstance():
var instance = Activator.CreateInstance(genericType, () => Activator.CreateInstance(typeArgument));
Run Code Online (Sandbox Code Playgroud)
它给了我一个编译错误:无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型。我在这里对委托函数使用了错误的语法吗?
我有两张桌子。用户 1:
UserID HolidayCity ValidFrom ValidTo
1 NULL '1900-01-01' '2017-05-09'
1 NULL '2017-05-09' NULL
2 NULL '1900-01-01' '2017-05-09'
2 NULL '2017-05-09' NULL
Run Code Online (Sandbox Code Playgroud)
用户2:
UserID CityID
1 33
2 55
Run Code Online (Sandbox Code Playgroud)
我需要使用每个 UserID 的第二个表中 CityID 列中的值更新第一个表中的 HolidayCity 列,但只有那些ValidTo 为 NULL 的记录,以便结果表 Users1 将是:
UserID HolidayCity ValidFrom ValidTo
1 NULL '1900-01-01' '2017-05-09'
1 33 '2017-05-09' NULL
2 NULL '1900-01-01' '2017-05-09'
2 55 '2017-05-09' NULL
Run Code Online (Sandbox Code Playgroud)
你能告诉我怎么做吗?