30

インターフェイスメソッドとMethodInfoインターフェイスを実装するクラスがあります。インターフェイス メソッドを実装するクラス メソッドのを見つけたい。TypeMethodInfo

simplemethod.GetBaseDefinition()はインターフェイス メソッドでは機能しません。インターフェイスメソッドを明示的に実装する場合、任意の名前を付けることができるため、名前による検索も機能しません (はい、C# ではできません)。

では、すべての可能性をカバーする正しい方法は何ですか?

4

3 に答える 3

43

OK、GetInterfaceMapを使用して方法を見つけました。

var map = targetType.GetInterfaceMap(interfaceMethod.DeclaringType);
var index = Array.IndexOf(map.InterfaceMethods, interfaceMethod);

if (index == -1)
{
    //this should literally be impossible
}

return map.TargetMethods[index];
于 2009-07-11T13:13:56.657 に答える