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?Crear instancia de tipo genérico?
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 le doy a BaseFruit
un constructor sin parámetros y luego lleno todo a través de las variables de los miembros. En mi código real (no sobre la fruta) esto es bastante poco práctico.
-Update-
por lo que parece que no puede ser resuelto por las restricciones de ninguna manera a continuación. A partir de las respuestas hay tres soluciones candidatas:
- patrón de la fábrica
- Reflexión
- Activador
tiendo a pensar que la reflexión es la menos una limpia, pero no puede decidir entre el otros dos.
BTW: hoy probablemente resolvería esto con la biblioteca IoC de elección. –