Как получить экземпляры во всех приватных полях объекта? - PullRequest
2 голосов
/ 30 июля 2009

Я хотел бы использовать отражение, чтобы исследовать частные поля объекта, а также получить значения в этих полях, но мне трудно найти синтаксис для него.

Например, у объекта есть 6 закрытых полей, я предполагаю, что я могу получить их FieldInfo с чем-то вроде

myObject.GetType().GetFields(BindingFlags.NonPublic)

но без кубиков - вызов возвращает массив 0.

Какой правильный синтаксис для доступа к полям?

Ответы [ 4 ]

6 голосов
/ 30 июля 2009
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static
4 голосов
/ 30 июля 2009

Вы переопределили флаги по умолчанию, поэтому вам нужно добавить Instance обратно в ...

myObject.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
1 голос
/ 31 июля 2009

Поскольку вы хотите получить как поля, так и значения:

from field in myObject.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
select new
{
    Field = field,
    Value = field.GetValue(myObject)
};
1 голос
/ 30 июля 2009

Вы также должны добавить BindingFlags.Instance

myObject.GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...