Отражение C# - Базовый класс статические поля в Производном типе

Ruby и Python имеют больше общих черт, чем различия; то же верно для направляющих и Django, которые являются ведущими веб-платформами на соответствующих языках.

Оба языка и обе платформы, вероятно, будут полезны для работы с - в персональных, "забавных" терминах, по крайней мере - я не знаю то, на что рынки труда похожи в определенных областях.

в StackOverflow существуют некоторые подобные вопросы: Вы могли сделать хуже, чем нажатие вокруг "Связанного" списка на правой боковой панели для получения большего количества ощущения.

Лучшая вещь состоит в том, чтобы получить и попробовать обоих: выберите маленький проект и создайте его оба пути. Решите, который Вы любите лучше и идете для него!

13
задан Ruben Bartelink 13 February 2013 в 14:52
поделиться

4 ответа

Вот как это работает. статические члены на самом деле не объектно-ориентированный материал. Они не полиморфны, они действительно принадлежат своему декларирующему типу и не связаны с другими типами в иерархии наследования. Например, статический инициализатор для базового класса не требуется запускать перед доступом к статическому члену в производном классе.

статические члены базовых классов не возвращаются, если только BindingFlags.FlattenHierarchy не является указано:

type.GetFields(BindingFlags.Static 
             | BindingFlags.FlattenHierarchy
             | BindingFlags.Public)
20
ответ дан 1 December 2019 в 19:40
поделиться

Установите для перечисления BindingFlags.FlattenHierarchy значение Static, и это также будет выполнять поиск статических элементов. Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx

5
ответ дан 1 December 2019 в 19:40
поделиться

Ваш тип - это просто ваш тип - он не включает базовые типы. Вам нужно будет использовать BindingFlags.FlattenHierarchy , если вы хотите искать поля в базовых классах.

3
ответ дан 1 December 2019 в 19:40
поделиться

Потому что они относятся к базовому типу и не наследуются. Поднимитесь к этому типу, и вы их найдете.

- Правка

У Мехрдада есть правильный ответ, но для полноты:

foreach(FieldInfo f in b.GetType().GetFields(
    BindingFlags.Static
    | BindingFlags.FlattenHierarchy
    | BindingFlags.Instance
    | BindingFlags.Public
    )){
    Console.WriteLine("found: " + f.Name);
}
6
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: