gpt4 book ai didi

C# GetMethod 不返回父方法

转载 作者:可可西里 更新时间:2023-11-01 08:18:06 27 4
gpt4 key购买 nike

我有以下类树:

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)标志都无济于事。有帮助吗?

最佳答案

你应该使用一个 overloads采用 BindingFlags 参数,并包含 FlattenHierarchy

Specifies that public and protected static members up the hierarchy should be returned. Private static members in inherited classes are not returned. Static members include fields, methods, events, and properties. Nested types are not returned.

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

关于C# GetMethod 不返回父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com