Ruby и Python имеют больше общих черт, чем различия; то же верно для направляющих и Django, которые являются ведущими веб-платформами на соответствующих языках.
Оба языка и обе платформы, вероятно, будут полезны для работы с - в персональных, "забавных" терминах, по крайней мере - я не знаю то, на что рынки труда похожи в определенных областях.
в StackOverflow существуют некоторые подобные вопросы: Вы могли сделать хуже, чем нажатие вокруг "Связанного" списка на правой боковой панели для получения большего количества ощущения.
Лучшая вещь состоит в том, чтобы получить и попробовать обоих: выберите маленький проект и создайте его оба пути. Решите, который Вы любите лучше и идете для него!
Вот как это работает. статические
члены на самом деле не объектно-ориентированный материал. Они не полиморфны, они действительно принадлежат своему декларирующему типу и не связаны с другими типами в иерархии наследования. Например, статический инициализатор для базового класса не требуется запускать перед доступом к статическому члену в производном классе.
статические
члены базовых классов не возвращаются, если только BindingFlags.FlattenHierarchy
не является указано:
type.GetFields(BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Public)
Установите для перечисления BindingFlags.FlattenHierarchy значение Static, и это также будет выполнять поиск статических элементов. Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx
Ваш тип - это просто ваш тип - он не включает базовые типы. Вам нужно будет использовать BindingFlags.FlattenHierarchy
, если вы хотите искать поля в базовых классах.
Потому что они относятся к базовому типу и не наследуются. Поднимитесь к этому типу, и вы их найдете.
- Правка
У Мехрдада есть правильный ответ, но для полноты:
foreach(FieldInfo f in b.GetType().GetFields(
BindingFlags.Static
| BindingFlags.FlattenHierarchy
| BindingFlags.Instance
| BindingFlags.Public
)){
Console.WriteLine("found: " + f.Name);
}