In C#, when I'm reflecting over a derived type, how come I don't see base classes' static fields?
I've tried both type.GetFields(BindingFlags.Static)
and type.GetFields()
.
This is how it works. static
members are really non-object-oriented stuff. They are not polymorphic and they really belong to their declaring type and are unrelated to other types in the inheritance hierarchy. For instance, a static initializer for a base class is not required to run before accessing a static member in a derived class.
static
members of base classes are not returned unless BindingFlags.FlattenHierarchy
is specified:
type.GetFields(BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Public)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With