Доступ к закрытым полям и свойствам классов в C#

В большинстве случаев доступ к закрытым (private) членам класса из вне не требуется и более того в силу целого ряда объективных причин получать его не рекомендуется. Однако в некоторых случаях это может быть полезным.

В C# существует два способа получить доступ к закрытым членам (не считая открытых методов и свойств). Это доступ из вложенного класса и рефлексия.

В рамках данной статьи мы рассмотрим только доступ к полям и свойствам. Вызов закрытых методов будет рассмотрен отдельно.

Использование вложенных классов

В C# во вложенном классе в можно получить доступ к закрытым членам экземпляра внешнего класса, а также его статическим членам. В то же время доступ к закрытым членам вложенного класса из внешнего класса невозможен.

Пример:

Рефлексия

Рефлексия позволяет получать описание типов данных во время выполнения программы. Что в свою очередь даёт возможность получить доступ к закрытым членам. В данном случае к полям и методам.

Доступ к полям осуществляется при помощи класса FieldInfo. Для примера используем класс приведённый ранее.

Доступ к закрытому свойству при помощи класса PropertyInfo осуществляется аналогичным образом.

Пример для статического свойства:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *