private
в C # действительно является лишь частью спецификации языка; на языке C #, а также на языке Visual Basic или любом другом приемлемом языке .NET (включая CIL , на котором собраны все языки .NET), одному из них запрещен доступ к private
(или protected
, если вы не в производном классе) участник на языке . Однако тот факт, что язык не поддерживает публичный доступ к private
или protected
членам, не означает, что базовая структура не может предоставить доступ к этим членам.
Это один из тех случаев, когда обычно не должен использовать обходные пути, такие как отражение, для доступа к элементам private
или protected
или их изменения, но каркас позволяет в любом случае. Как правило, у вас должна быть очень веская причина для доступа к private
или protected
членам; одна из таких причин, например, заключается в реализации сериализатора, который должен смотреть на внутреннее состояние объекта для правильной сериализации объекта. Если вы не делаете что-то подобное, вам следует по-настоящему взглянуть на переопределение класса, внутри которого вы ковыряетесь, чтобы вам не нужно было использовать отражение в вашей программе.