Search code examples
c#.netreflectionoverridingmethodinfo

How to determine if the MethodInfo is an override of the base method


I'm trying to determine if the MethodInfo object that I get from a GetMethod call on a type instance is implemented by the type or by it's base.

For example:

Foo foo = new Foo();
MethodInfo methodInfo = foo.GetType().GetMethod("ToString",BindingFlags|Instance);

the ToString method may be implemented in the Foo class or not. I want to know if I'm getting the foo implementation?

Related question

Is it possible to tell if a .NET virtual method has been overriden in a derived class?


Solution

  • Check its DeclaringType property.

    if (methodInfo.DeclaringType == typeof(Foo)) {
       // ...
    }