Найти частное поле с Отражением?

219
задан oɔɯǝɹ 31 January 2015 в 05:47
поделиться

5 ответов

Используйте BindingFlags.NonPublic и BindingFlags.Instance флаги

FieldInfo[] fields = myType.GetFields(
                         BindingFlags.NonPublic | 
                         BindingFlags.Instance);
271
ответ дан Bob King 23 November 2019 в 04:08
поделиться

Можно сделать это точно так же, как со свойством:

FieldInfo fi = typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance);
if (fi.GetCustomAttributes(typeof(SomeAttribute)) != null)
    ...
163
ответ дан Abe Heidebrecht 23 November 2019 в 04:08
поделиться

Одна вещь, о которой необходимо знать, когда размышляющий над членами парламента, не занимающими официального поста то, что, если приложение работает в среднем доверии (как, например, при работе общей среды хостинга), она не найдет их - BindingFlags. Опция NonPublic будет просто проигнорирована.

24
ответ дан jammycakes 23 November 2019 в 04:08
поделиться
typeof(MyType).GetField("fieldName", BindingFlags.NonPublic | BindingFlags.Instance)
18
ответ дан Darren Kopp 23 November 2019 в 04:08
поделиться

Да, однако необходимо будет установить Обязательные флаги для поиска частных полей (если поиск участника за пределами экземпляра класса).

обязательный флаг, в котором Вы будете нуждаться: Система. Отражение. BindingFlags. NonPublic

4
ответ дан mmattax 23 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

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