Celui-ci s'est avéré être un peu délicat pour moi jusqu'à présent. Je me demande s'il est possible de taper de jeter un objet à l'aide d'un objet System.Type.
J'ai illustré ci-dessous ce que je veux dire: p> Ce qui précède est un générique interface qui est la raison pour laquelle j'utilise "objet" pour les types. p> p>
5 Réponses :
La manière typique de le faire est d'utiliser des génériques, comme: Comme vous l'avez mentionné dans votre commentaire ci-dessous, les génériques sont très similaires aux modèles C ++. Vous pouvez trouver le Documentation MSDN pour les génériques ici et l'article " Différences entre les modèles C ++ et les génériques C # (Guide de programmation C #) " probablement être utile. p> Enfin, je pourrais être mal compris ce que vous voulez faire à l'intérieur du corps de la méthode: je ne sais pas comment vous transformerez un type arbitraire t code> dans un autre Type arbitraire
T2 code>, sauf si vous spécifiez des contraintes sur les types génériques. Par exemple, vous devrez peut-être spécifier qu'ils doivent tous deux mettre en œuvre une interface. Contraintes sur les paramètres de type (Guide de programmation C #) explique comment faire cela En C #. P>
code> délégué où Vous essayez actuellement d'utiliser votre
IDataDapter code> interface.) p> p>
Je n'ai pas fait effacer dans l'exemple, mais les deux méthodes sont dans une interface idatadapter.
Ce qui précède est une interface générique qui est la raison pour laquelle j'utilise "objet" pour les types p>
n'aurait pas plus de sens d'utiliser une interface générique réelle: p>
xxx pré> blockquote>
Celles-ci ressemblent à des modèles de C ++ - ne les ont pas encore couverts dans C #. Merci!
Je suis un peu confus quant à la façon dont vous utilisez "U" en dehors du générique. Quelle portée avez-vous donné?
@Kelix: "U" serait votre type actuel, vous n'utiliseriez pas vraiment "u" comme ça. Regardez la réponse de @ Jeff et remarquez que son T2 est remplacé par "chaîne" et correspond de la même manière.
Je pourrais aussi utiliser un "var" et ne pas être jeté du tout si je ne me trompe pas?
Vous ferez mieux d'utiliser quelque chose comme le convertisseur délégué pour un exemple, consultez msdn p>
Comment cela permet-il d'obtenir un objet de type d'un autre objet? L'entrée et la sortie ne sont pas des objets et doivent être connus au moment de la compilation.
Pourquoi le rendre compliqué, quand vous êtes sûr qu'il renvoie une chaîne?
var output = Convert.ChangeType(t.Transform(input), t.GetOutputType());
Parce que l'exemple est une interface - mise à jour maintenant.
Je vais frapper 1 pour ça! J'aime l'idée de convert.changetype () code> et fournissant le type de l'objet sous forme de 2e argument afin de pouvoir modifier ce type. Je travaille sur une autre bibliothèque et j'espère que cela sauvera ma nuit. Merci@shahkalpesh
C'est ce que je suis allé avec (basé sur la structure iénumérable):