Voici le code pour obtenir les comptes pour les IA et IB:
var ibCount = typeof(IB).GetMethods().Count(); // returns 0
var iaCount = typeof (IB).GetInterfaces()[0].GetMethods().Count(); // return 1
Notez que dans le code de production, je ne voudrais pas utiliser GetInterfaces()[0]
comme généralement dans le code où j'utiliser cela, je ne peux pas supposons que j'aurai toujours au moins une interface.
J'ai aussi essayé les BindingFlags comme suit:
const BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
var ibCount = typeof(IB).GetMethods(bindingFlags).Count();
Cependant, cela retournera toujours 0 comme l'interface IB
ne fonctionne toujours pas mettre en œuvre la méthode TestMethod()
. Interface IA
fait. L'utilisation de drapeaux de liaison fonctionnerait si les deux IA
et IB
étaient des classes. Dans ce cas cependant, vous obtenez une valeur de retour de 5. N'oubliez pas que IA dérive implicitement de la classe Object
!
J'ai bloqué BindingFlags parce qu'ils n'aident pas;). – ppiotrowicz
Les drapeaux de liaison n'aident pas dans ce cas. Ils aident quand les cours sont impliqués. – Manfred