Если BaseFruit
имеет конструктор, который принимает int weight
, могу ли я создать экземпляр фрукта в общем методе, подобном этому?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Пример добавлен за комментариями. Кажется, я могу сделать это, только если я дам BaseFruit
конструктор без параметров, а затем заполню все через переменные-члены. В моем реальном коде (не о фруктах) это довольно непрактично.
-Update-
Таким образом, кажется, что это никак не может быть решено ограничениями. Из ответов есть три варианта решения:
- Заводская модель
- Отражение
- Активатор
Я склонен думать, что отражение наименее чистое, но я не могу выбирать между двумя другими.