小编B.S*_*iuk的帖子

在.NET中看不到System.Drawing命名空间中的Image类型

我正在尝试编写一个程序,通过尺寸对特定文件夹中的图像进行排序,并通过简单的.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)

.net c# image dimensions

6
推荐指数
2
解决办法
7435
查看次数

如何创建其构造函数需要委托函数参数的泛型类型的实例?

我需要在其中使用以下通用类和方法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 表达式转换为类型“字符串”,因为它不是委托类型。我在这里对委托函数使用了错误的语法吗?

c# reflection generic-type-argument

5
推荐指数
1
解决办法
94
查看次数

SQL Server:如何使用另一个表中的值更新表

我有两张桌子。用户 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)

你能告诉我怎么做吗?

sql-server sql-update

0
推荐指数
1
解决办法
2万
查看次数