Créer une instance de type générique?

Si BaseFruit a un constructeur qui accepte un int weight, je peux instancier un morceau de fruit dans une méthode générique de ce genre?

public void AddFruit<T>()where T: BaseFruit{
    BaseFruit fruit = new T(weight); /*new Apple(150);*/
    fruit.Enlist(fruitManager);
}

Un exemple est ajouté derrière les commentaires. Il semble que je ne peut le faire que si je donne BaseFruit un constructeur sans paramètre, puis remplissez tout à travers des variables membres. Dans mon vrai code (pas sur les fruits), c'est plutôt pratique.

-Mise à jour-

Il semble donc qu'il ne peut pas être résolu par des contraintes de toute façon-là. À partir des réponses il y a trois solutions:

  • Modèle De Fabrique
  • Réflexion
  • Activateur

J'ai tendance à penser que la réflexion est la moins propre, mais je ne peux pas décider entre les deux autres.

  • BTW: aujourd'hui, je serais probablement résoudre ce avec la bibliothèque du Cio de choix.
  • La réflexion et l'Activateur sont en fait étroitement liés.