Используйте BindingFlags.NonPublic
и BindingFlags.Instance
флаги
FieldInfo[] fields = myType.GetFields(
BindingFlags.NonPublic |
BindingFlags.Instance);
Можно сделать это точно так же, как со свойством:
FieldInfo fi = typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance);
if (fi.GetCustomAttributes(typeof(SomeAttribute)) != null)
...
Одна вещь, о которой необходимо знать, когда размышляющий над членами парламента, не занимающими официального поста то, что, если приложение работает в среднем доверии (как, например, при работе общей среды хостинга), она не найдет их - BindingFlags. Опция NonPublic будет просто проигнорирована.
typeof(MyType).GetField("fieldName", BindingFlags.NonPublic | BindingFlags.Instance)
Да, однако необходимо будет установить Обязательные флаги для поиска частных полей (если поиск участника за пределами экземпляра класса).
обязательный флаг, в котором Вы будете нуждаться: Система. Отражение. BindingFlags. NonPublic