Недавно я столкнулся с проблемой, с которой я использовал С#, и она была решена путем установки частного члена с помощью reflection.
Я был ошеломлен, узнав, что установка частного члена/поля, а также запуск частного метода - это вещи, которые разрешены и возможны на С#. Это не вопрос о том, как это сделать, они хорошо документированы, мой вопрос: почему?
Если вы установите для параметра field/member/method как private/internal, почему С# в качестве языка разрешает устанавливать эти поля вне области видимости? Я бы подумал, что это вызовет какое-то исключение. Если класс хотел, чтобы они были изменены или установлены, не было бы метода или конструктора?