3

C#では、オブジェクト初期化子はパブリックの非読み取り専用フィールドとプロパティを設定できます。

ただし、匿名タイプの場合、プロパティは読み取り専用です。では、.NETはどのようにオブジェクトの初期化にそれらを設定しますか?

4

3 に答える 3

7

すべての読み取り専用プロパティと同様に、コンストラクターで設定できます。

匿名型のコンストラクターは、それを使用して生成され、フィールドはそれを介して設定されます。

于 2012-05-18T09:31:15.533 に答える
3

匿名型のオブジェクト初期化子は、通常のオブジェクト初期化子のようには動作しません。つまり、プロパティを直接設定しません。これは、読み取り専用フィールドを変更できるコンストラクターへの呼び出しに変換されます。

于 2012-05-18T09:32:43.017 に答える
1

さらに、リフレクションを介して、または作成後にマネージド コードのパッチを適用することで設定できます。

たとえば、適切なバインド フラグを使用してフィールドを取得し、列挙して正しいパラメータで SetValue を呼び出します...

于 2012-05-18T09:31:55.450 に答える