Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get MethodInfo of interface method, having implementing MethodInfo of class method?

I have a MethodInfo of an interface method and Type of a class that implements the interface. I want to find the MethodInfo of the class method that implements the interface method.

The simple method.GetBaseDefinition() does not work with interface methods. Lookup by name won't work either, because when implementing interface method explicitly it can have any name (yes, not in C#).

So what is the correct way of doing that that covers all the possibilities?

like image 245
Krzysztof Kozmic Avatar asked Jul 11 '09 12:07

Krzysztof Kozmic


1 Answers

OK, I found a way, using 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]; 
like image 177
Krzysztof Kozmic Avatar answered Oct 05 '22 16:10

Krzysztof Kozmic