1. ホーム
  2. c#

[解決済み] C#でリフレクションを使ってプライベートメンバーを変更したり、プライベートメソッドを実行することが可能なのはなぜですか?重複] [重複

2023-04-07 18:02:34

質問

最近、C#を使っていて困ったことがあったのですが、それはプライベートメンバを リフレクション .

プライベートメンバー/フィールドを設定することと、プライベートメソッドを実行することが、C#で許可され可能なことだと知って、私は唖然としました。これは、これらのことをどのように行うかという問題ではなく、それらは十分に文書化されており、私の質問は、「なぜ?

フィールド/メンバー/メソッドをプライベート/内部として設定した場合、なぜC#は言語としてこれらのフィールドをスコープ外に設定することを許可するのでしょうか?私は、これは何らかの例外を投げるだろうと思います。もしクラスがこれらを変更または設定したいのであれば、メソッドまたはコンストラクタがあるのではないでしょうか?

どのように解決するのですか?

アクセス修飾子があるのは、自分が使用するAPIのドキュメント化を支援するためなので が欲しい を消費者、または継承者などに公開するための文書化を支援するものだからです。

それらは ではない セキュリティ/アクセス制御のメカニズムではありません。