9
votes

Construire un objet générique (constructeur non par défaut)

Je veux construire un objet à partir d'une méthode générique. Cet objet prend une chaîne dans son constructeur. Quelque chose comme ceci: xxx

est-ce possible?


0 commentaires

3 Réponses :


11
votes

Oui, mais seulement sans vérification de la compilation si le constructeur existe vraiment: Activateur .CreateInstance xxx


3 commentaires

Donc, si le constructeur (string) n'existe pas, ce sera une erreur d'exécution?


@Smashery: Exactement. Il lancera une exception si t n'a pas de (chaîne) constructeur.


Merci beaucoup! SUCKS Je ne peux que choisir une "réponse correcte", mais merci de m'appeler quelque chose de nouveau!



0
votes

non. Pour le moment, vous ne pouvez pas utiliser de constructeurs paramétrés avec des types génériques, car vous ne pouvez pas les définir dans où.

Utiliser l'activateur n'est pas la même - et je ne crois pas la réponse à votre question - mais vous pouvez l'utiliser bien sûr.


0 commentaires

8
votes

Une option est de réécrire ceci pour forcer l'appelant à transmettre une méthode d'usine / lambda xxx

le site d'appel serait modifié pour ressembler à ce xxx


1 commentaires

La signature de méthode obtient beaucoup plus compliquée que la solution de DTB, mais je ressemble à la vérification du temps de compilation qui l'accompagne. Trade-offs, je suppose.