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