Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Прочитать приватное поле у объекта


Автор: andrey_pro 19.8.2010, 11:37
есть объект, я знаю имя его приватного поля.
как его можно прочитать?
вроде как то через маршалинг

Автор: mrbrooks 19.8.2010, 11:47
если сборка пользуется полным доверием, то можно через отражение. подробнее описано у Рихтера в соответствующей главе.

Автор: azesmcar 19.8.2010, 11:51
Код

    class A
    {
        private int val = 10;
    }

    static void Main()
    {
        A obj = new A();
    
        object value = obj.GetType().GetField("val",
                BindingFlags.NonPublic |
                BindingFlags.Instance).GetValue(obj);

        Console.WriteLine(value);
    }

как-то так

Автор: mrbrooks 19.8.2010, 11:56
Цитата(azesmcar @  19.8.2010,  12:51 Найти цитируемый пост)
как-то так 

вот зачем же ты так. человек бы умную книжку прочитал  smile 

Автор: azesmcar 19.8.2010, 11:58
Цитата(mrbrooks @  19.8.2010,  11:56 Найти цитируемый пост)
вот зачем же ты так. человек бы умную книжку прочитал  smile  

тсссс...от конкурентов избавляюсь smile 

Автор: andrey_pro 19.8.2010, 12:30
а если .GetFields() возвращает количество = 0? значит сборка пользуется неполным доверием?

как нибудь по другому можно прочитать?

Автор: andrey_pro 19.8.2010, 19:47
 smile 

Автор: andrey_pro 19.8.2010, 20:26
закрываю вопрос, был не внимателен, это решение:
 object value = obj.GetType().GetField("val",
                BindingFlags.NonPublic |
                BindingFlags.Instance).GetValue(obj);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)