次のコードはコンパイルに失敗し、「ウィジェットはパブリックパラメーターなしのコンストラクターを持つ非抽象型でなければなりません」というエラーが発生します。コンパイラには必要な情報がすべて揃っていると思います。これはバグですか?見落とし?または、これが有効でないシナリオはありますか?
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
}
}