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