シリアライゼーションのための DataContracts の設計の 1 つの点で、私はかなり混乱しています。
オブジェクト (Customer など) があり、コレクション プロパティ (Addresses という名前の AddressCollection など) を公開するとします。フレームワークの設計ガイドラインでは、プロパティのパブリック ミューテーターを公開しないように規定されています。つまり、コレクション プロパティには get と no set が必要であり、代わりに public set メソッド (public void SetAddresses(IEnumerable< Address> addresses)) を使用する必要があります。
しかし、そのオブジェクトをシリアル化する必要があり、部分信頼環境になると予想される場合、適切に逆シリアル化できるように、パブリック セッターをプロパティに追加する必要がありますか?
さらに、シリアル化時にコレクションに何も含まれていない場合、デフォルトのコンストラクターは DataContractSerializer によって呼び出されないため、コレクションがまったく設定されておらず、null のままになっていると確信しています。OnSerializing 属性を使用してコレクションを初期化することもできますが、部分信頼シナリオではそのメソッドもパブリックにする必要がありますね。そして、それはさらに醜いです。
ここで適切なガイダンスを知っている人はいますか?
どうもありがとう。