BaseFruit
を受け入れるコンストラクターがある場合、int weight
このようなジェネリックメソッドで果物の一部をインスタンス化できますか?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
コメントの後ろに例が追加されています。BaseFruit
パラメーターなしのコンストラクターを指定し、メンバー変数を使用してすべてを入力する場合にのみ、これを行うことができるようです。私の実際のコードでは(果物についてではなく)、これはかなり実用的ではありません。
-更新-
だから、それはそれではどのような方法でも制約によって解決できないようです。回答から3つの候補ソリューションがあります。
- 工場パターン
- 反射
- 活性剤
反射は最もクリーンなものだと思う傾向がありますが、他の2つを決定することはできません。