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;
}
Product
に公開のデフォルトコンストラクタがある場合は、クライアントが(最初のコンストラクタを使用して)コンストラクタの作成方法を指定する必要がないようにしたいと思います。しかし、私はProduct
に(2番目のコンストラクタを介して)パブリックデフォルトコンストラクタがない状況を許可したいと思います。C# "条件付き"制約付きの汎用クラス?
Factory
第1世代のコンストラクタの実装を許可するには一般的な制約が必要ですが、パブリックのデフォルトコンストラクタを使用しないクラスでは使用できません。
両方を許可する方法はありますか?