2009-07-13 11 views
2

インスタンス化されたオブジェクトを不変にする方法はありますか?(Reflection I希望)と一緒に?私は利用する必要のある他の誰かのコードベース(ソースが利用できません)からのクラスを持っていて、インスタンス化された後にこのクラス内のパブリックセッターをコールしようとすると、実行時にオブジェクトを変更できないようにする[C#]

注:これを実装するには、クラスの周りにラッパーオブジェクトを作成する必要はありません。私は怠け者。

答えて

6

いいえ反射による経由はありません。型定義は、リフレクションによって実行時に変更することはできません。したがって、型定義を変更不可能にするためのデバイスとして使用することはできません。

しかし反射は、タイプの不変性に違反するために使用できます。例えば、コンストラクタが実行された後、長い間リフレクションによってreadonlyでマークされたプロパティを設定することは可能です。

+0

+1それは可能ではないことを指摘するために - 私はより多くの努力の実現可能性について動機づけに取り組んでいます! –

11

私は、あなたがラッパークラスで単純に解決できる何かをするためのリフレクションコードを導入したいとは思っていません。

あなたのリフレクションコードが壊れたり、変更が必要になったときに、少しでも時間を費やすことができます。ラッパークラスはシンプルで実装が簡単で、型保証されており、他の開発者にとっては意味があります。怠惰があなたの建築上の選択を指示するようにしないでください。

+1

+1 - 合意しました。単純な理由でラッパーをお勧めします:クラリティ。 –

+0

しかし、実行時間のリフレクションはとても面白いです!とにかくこれは一時的なコードになるでしょう。プロジェクトが完了したら、おそらくそれを保つ必要はありません。 –

+2

+1この動作を実現するための良い方法。 – JaredPar

関連する問題