2009-12-21 3 views
1

Cette question est de continuer How to distinguish MethodBase in genericsdétecter des paramètres génériques de MethodBase

En bref: je dois distinguer dans le dictionnaire même méthode générique lorsqu'elle est appelée pour les différents types de substitution de génériques. Donc, j'ai surchargé IEqualityComparer, pour comparer l'argument MethodBase par argument. Et pendant le débogage je me suis demandé qu'il n'y a aucun moyen de détecter le type réel d'argument de la méthode générique, ni GetGenericArguments ni GetParameters ne fournissent pas le type réel d'appel. Ai-je raison? Si oui, je ne vois pas d'autre moyen que de comparer par première ligne Environment.StackTrace - parce que seule cette méthode explore le type d'argument.

+0

Je suggère la même solution qu'ici: http://stackoverflow.com/a/19118345/2042090 –

Répondre

0

Je ne pense pas que StackTrace va vous aider: Je ne fournit pas d'informations sur les types réels avec lesquels générique a été appelé. La solution la plus raisonnable pour moi est de créer votre propre classe qui stockera des informations sur les paramètres génériques et les remplira par des méthodes génériques.

quelque chose comme:

Method1 vide statique (T g) {Helper m1 = new Helper (T.GetType()); cache [m1] = "m1:" + typeof (T); }

1

Étant donné qu'une méthode générique n'a qu'un seul MethodBase, il n'y a aucun moyen de faire ce que vous voulez. Vous devrez utiliser un autre type comme clé de votre dictionnaire si vous avez besoin de cette fonctionnalité, car la méthode MethodBase ne contient pas à elle seule les arguments de type lorsqu'une méthode générique a été appelée.

Questions connexes