コード分析エラーを順守する過程で、プロパティをプライベート セッターを持つように変更しています。それから、その理由をもう少し理解しようとしました。いくつかの調査から、MS は次のように述べています。
書き込み可能なコレクション プロパティを使用すると、ユーザーはコレクションをまったく別のコレクションに置き換えることができます。
そして、答えはここにあり、次のように述べています。
オブジェクトにパブリック セッターを追加する
List<T>
ことは危険です。
しかし、危険な理由は記載されていません。そして、それは私が興味を持っている部分です。
このコレクションがある場合:
public List<Foo> Foos { get; set; }
セッターを非公開にする理由 どうやら、クライアント コードでコレクションを置き換えたくないようですが、クライアントがすべての要素を削除して、必要なものを追加できる場合、ポイントは何ですか? それはコレクションを完全に置き換えることと同じではありませんか? このコード分析ルールに従うことで、どのような価値が提供されるでしょうか?