Si BaseFruit
un constructeur accepte un int weight
, puis-je instancier un fruit dans une méthode générique comme celle-ci?
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 puisse le faire que si je donne BaseFruit
un constructeur sans paramètre et que je remplis tout par le biais de variables membres. Dans mon vrai code (pas sur les fruits), c'est plutôt peu pratique.
-Update-
Il semble donc que cela ne puisse être résolu par aucune contrainte. D'après les réponses, il existe trois solutions possibles:
- Modèle d'usine
- Réflexion
- Activateur
J'ai tendance à penser que la réflexion est la moins nette, mais je ne peux pas choisir entre les deux autres.