- , , , . , , GetBaseDefinition().
(MyMethod) (MyClass), , :
MethodInfo interfaceMethodInfo = typeof(IMyInterface).GetMethod("MyMethod");
MethodInfo classMethodInfo = null;
Type[] interfaces = typeof(MyClass).GetInterfaces();
foreach (Type iface in interfaces)
{
MethodInfo[] methods = iface.GetMethods();
foreach (MethodInfo method in methods)
{
if (method.Equals(interfaceMethodInfo))
{
classMethodInfo = method;
break;
}
}
}
, MethodInfo.Equals , . , , # 'er
EDIT
. - , , , , MethodInfo : typeof(MyClass).GetInterfaces()
MethodInfo Type, - :
classMethodINfo = typeof(MyClass)
.GetMethods()
.Where(m => m.Name == interfaceMethodInfo.Name)
.Where(m => m.ReturnType == interfaceMethodInfo.ReturnType)
.Where(m => m.GetParameters().Select(p => p.ParameterType).SequenceEqual(interfaceMethodInfo.GetParameters().Select(p => p.ParameterType)))
.FirstOrDefault();
, , . MethodInfo, ( true ), .
- , ( ). , MethodInfo .
, , MethodInfo , , MethodInfo.Invoke.