Вот код для получения счетчиков для IA и IB:
var ibCount = typeof(IB).GetMethods().Count(); // returns 0
var iaCount = typeof (IB).GetInterfaces()[0].GetMethods().Count(); // return 1
Обратите внимание, что в рабочем коде я бы не использовал GetInterfaces()[0]
, как обычно в коде, где я использовал бы это, я не могу предположить, что у меня всегда будет хотя бы один интерфейс.
Я также опробовал флаги привязки следующим образом:
const BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
var ibCount = typeof(IB).GetMethods(bindingFlags).Count();
Однако, это все равно вернет 0, так как интерфейс IB
все еще не реализует метод TestMethod()
. Интерфейс IA
делает. Использование флагов привязки сработало бы, если бы оба класса IA
и IB
были классами. Однако в этом случае вы получите возвращаемое значение 5. Не забывайте, что IA неявно наследуется от класса Object
!