Найти частное поле интерфейса с отражением? - PullRequest
1 голос
/ 11 ноября 2009

Учитывая этот класс

public partial class Default : Page
{
    private IRepository repo;
    ...
}

Я хочу найти и установить личное поле repo. Это возможно?

UPDATE

Я пытался использовать GetFields(BindingFlags.NonPublic), он возвращает {System.Reflection.FieldInfo[0]}.

ОБНОВЛЕНИЕ II

Я пытался использовать GetFields(BindingFlags.NonPublic | BindingFlags.Instance) , он возвращает все поля Page, но не repo.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

Используйте перегрузку GetFields, которая позволяет указывать флаги:

GetFields(BindingFlags.NonPublic | BindingFields.Instance)
0 голосов
/ 16 ноября 2009

Вы можете использовать следующий код:

MemberInfo [] mi = System.Runtime.Serialization.FormatterServices.GetSerializableMembers (MyType);

и преобразовать FieldInfo fi = (FieldInfo) mi [i]; этот код возвращают Сериализуемые Члены (рядовые)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...