¿Crear instancia de tipo genérico?


Si BaseFruit tiene un constructor que acepta un int weight, ¿puedo instanciar una pieza de 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 añade un ejemplo detrás de los comentarios. Parece que solo puedo hacer esto si doy BaseFruit un constructor sin parámetros y luego lleno todo a través de variables miembro. En mi código real (no sobre frutas) esto es bastante poco práctico.

-Actualización-
Así que parece que no puede ser resuelto 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 los otros dos.


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52