Si BaseFruit
tiene un constructor que acepta un int weight
, ¿puedo crear una instancia de una fruta en un método genérico como este?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Se agrega un ejemplo detrás de los comentarios. Parece que solo puedo hacer esto si doy BaseFruit
un constructor sin parámetros y luego lo relleno todo a través de las variables miembro. En mi código real (no sobre fruta) esto es poco práctico.
-Update-
Entonces parece que no puede resolverse por restricciones de ninguna manera entonces. De las respuestas hay tres soluciones candidatas:
- Patrón de fábrica
- Reflexión
- Activador
Tiendo a pensar que la reflexión es la menos limpia, pero no puedo decidir entre las otras dos.