我有以下类(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)静态方法的要点,现在已更改了问题以使其公开。)