我需要检查两个MethodInfo之间是否相等。实际上它们是完全相同的MethodInfo,唯一不同的是ReflectedType(也就是DeclaringType是相同的,这些方法实际上应该具有相同的主体)。有许多方法可以做到这一点,但我正在寻找最有效的方法。
现在我已经有了以下代码:
public static bool AreMethodsEqualForDeclaringType(this MethodInfo first, MethodInfo second)
{
first = first.ReflectedType == first.DeclaringType ? first : first.DeclaringType.GetMethod(first.Name, first.GetParameters().Select(p => p.ParameterType).ToArray());
second = second.ReflectedType == second.DeclaringType ? second : second.DeclaringType.GetMethod(second.Name, second.GetParameters().Select(p => p.ParameterType).ToArray());
return first == second;
}
这个方法有点耗费资源,所以我在想是否有更好的方法...
我应该比较这两个方法的具体实现吗?例如:
first.GetMethodBody() == second.GetMethodBody()
谢谢。