Мне нужно проверить равенство между двумя MethodInfos. На самом деле они точно такие же 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()
Спасибо.