以下代码无法编译,产生“Widget 必须是具有公共无参数构造函数的非抽象类型”错误。我认为编译器拥有它需要的所有信息。这是一个错误吗?疏忽?还是在某些情况下这是无效的?
public class Factory<T> where T : new()
{
public T Build()
{
return new T();
}
}
public class Widget
{
public Widget(string name = "foo")
{
Name = name;
}
public string Name { get; set; }
}
public class Program
{
public static void Main()
{
var widget = new Widget(); // this is valid
var factory = new Factory<Widget>(); // compiler error
}
}