jam*_*o00 13 c# reflection inheritance static field
在C#中,当我反映派生类型时,为什么我看不到基类的静态字段?
我都试过type.GetFields(BindingFlags.Static)和type.GetFields().
Meh*_*ari 20
这是它的工作原理.static成员实际上是非面向对象的东西.它们不是多态的,它们实际上属于它们的声明类型,并且与继承层次结构中的其他类型无关.例如,在访问派生类中的静态成员之前,不需要运行基类的静态初始化程序.
static除非BindingFlags.FlattenHierarchy指定,否则不返回基类的成员:
type.GetFields(BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Public)
Run Code Online (Sandbox Code Playgroud)
因为它们属于基类型,并且不是继承的.上移到那种类型,你会发现它们.
- 编辑
Mehrdad有正确的答案,但仅仅是为了完整性:
foreach(FieldInfo f in b.GetType().GetFields(
BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Instance
| BindingFlags.Public
)){
Console.WriteLine("found: " + f.Name);
}
Run Code Online (Sandbox Code Playgroud)
将BindingFlags.FlattenHierarchy枚举设置为Static,这也将搜索静态成员.更多信息:http: //msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |