3
class Factory<Product> where Product : new()
{
public Factory()
: this(() => new Product())
{
}
public Factory(System.Func<Product> build)
{
this.build = build;
}
public Product Build()
{
return build();
}
private System.Func<Product> build;
}
在Factory
,當Product
有一個公共的默認構造函數,我希望客戶端不必指定如何構造一個(通過第一個構造函數)。不過,我想允許Product
沒有公共默認構造函數(通過第二個構造函數)的情況。帶有「條件」約束的C#泛型類?
Factory
的通用約束是允許實現第一個構造函數所必需的,但它禁止在沒有公共默認構造函數的情況下使用任何類。
有沒有辦法讓兩者兼容?