Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

C# рефлексия. Получение значения приватного поля экземпляра класса?

#c_sharp #рефлексия


Есть экземпляр класса Class1, каким образом можно получить его aValue поле?
Вопрос крайне глупый, понимаю... и все же. Получается получить только статические
поля, а для экземпляров как быть?

public class Class1{

    private int aValue;
    public Class1(int a){
        this.aValue = a;
    }
}

Class1 cls = new Class1(10);

    


Ответы

Ответ 1



Нужно указать маску: Class1 cls = new Class1(10); FieldInfo fieldInfo = typeof(Class1).GetField("aValue", BindingFlags.Instance | BindingFlags.NonPublic); int a = (int)fieldInfo.GetValue(cls);

Ответ 2



Один из принципов ООП - Инкапсуляция, означает что доступ к "некоторым" свойствам класса возможен только "внутри капсулы" из метода класса; Напиши метод public int GetValue() {return aValue}

Комментариев нет:

Отправить комментарий