Вот как это работает. static
члены действительно не объектно-ориентированные вещи. Они не являются полиморфными, и они действительно принадлежат своему объявленному типу и не связаны с другими типами в иерархии наследования. Например, статический инициализатор для базового класса не требуется запускать до доступа к статическому члену в производном классе.
static
члены базовых классов не возвращаются, если не указано BindingFlags.FlattenHierarchy
:
type.GetFields(BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Public)