MethodInfo Equality for Declaring Type

Мне нужно проверить равенство между двумя 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()

Спасибо.

10
задан Jeff 12 November 2010 в 19:51
поделиться