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