Imagine Tapez comme ceci (c #): donné que j'ai ouvert générique Je suis à la recherche d'une manière bien performante et fiable de recevoir une version fermée du mise à jour: p> Par fiabilité Je veux dire que cela devrait gérer des cas lorsque la méthode n'est pas publique, a une douzaine de surcharges, utilise Arguments génériques du type de base, pas seulement son interface immédiate, etc. p> p> méthodalinfo code> à partir de la version générique ouverte du type (
iamGeneric <>. Soami <> () code>) et le tableau suivant p>
Methodinfo < / code> comme ceci: p>
3 Réponses :
quelque chose comme ça? Je ne sais pas exactement ce que vous cherchez, peut-être développer votre question ... Cela aurait certainement besoin de chèques ajoutés (comme la vérification si le type de déclaration est générique / si la méthode est générique, etc.)
Voici un cas assez complexe pour obtenir raison:
public interface IAmGeneric<T> { void SoAmI<T1, T2>(T one, T1 two, T2 three); void SoAmI<T1, T2>(T one, T2 two, T1 three); void SoAmI<T1, T2>(T1 one, T two, T2 three); void SoAmI<T1, T2>(T2 one, T1 two, T three); void SoAmI<T1, T2, T3>(T2 one, T1 two, T3 three); }
Yeap, cela pourrait marcher, et c'est ce que je fais en ce moment. Cependant, la performance est loin d'être stellaire, alors je vous demande s'il y a une meilleure façon
Utilisez MéthodeBase.getMethodfromhandle code>
, comme indiqué dans Cette réponse associée :
Si vous avez déjà un
méthodyinfo code> à partir de l'interface, pourquoi vous souciez-vous des surcharges et des arguments génériques du type de base? La solution de @darrenkoppopp est tout ce dont vous avez besoin.