我有以下类(class)树:

public class A
{
    public static object GetMe(SomeOtherClass something)
    {
        return something.Foo();
    }
}

public class B:A
{
    public static new object GetMe(SomeOtherClass something)
    {
        return something.Bar();
    }
}

public class C:B
{

}

public class SomeOtherClass
{

}

给定SomeOtherClass parameter = new SomeOtherClass()),这有效:
typeof(B).GetMethod("GetMe", new Type[] { typeof(SomeOtherClass) })).Invoke(null, parameter));

但是这个:
typeof(C).GetMethod("GetMe", new Type[] { typeof(SomeOtherClass) })).Invoke(null, parameter));

抛出NullReferenceException,但我希望它调用的方法与上述方法完全相同。

我尝试了几个绑定(bind)标志都无济于事。有什么帮助吗?

最佳答案

您应该使用带有BindingFlags参数的overloads,并包括FlattenHierarchy



(编辑以删除关于私有(private)静态方法的要点,现在已更改了问题以使其公开。)

10-07 21:48