的XmlSerializer和集合屬性說我有一個簡單的類,像這樣私人二傳手
[Serializeable]
public class MyClass
{
public MyClass()
{
this.MyCollection = new List<int>();
}
public List<int> MyCollection { get; private set;}
}
如果我嘗試反序列化這個XmlSerializer的使用,我得到一個錯誤,指出MyCollection的是隻讀的,不能被分配到。不過,我不希望公開讓二傳手,因爲如果這個班的使用者給它分配的話,這會導致各種各樣的問題。 FxCop的正確警告說,不要這樣:Collection properties should be read only
但是在社區頁面的底部添加的內容是這樣的:
XmlSerializer的理解只讀 集合集合 屬性沒有被 讀 - 寫入XmlSerializer以 正確地序列化並反序列化內容 。 XmlSerializer的會看 一個名爲添加上收集實現ICollection的 或IEnumerable的 特性的方法,並用它來 填充集合時 反序列化的所有者 類型的實例。
但它似乎並不是這樣(因爲我得到InvalidOperationException)。我能做什麼遵循保持屬性setter爲private的最佳做法,同時仍允許使用XmlSerializer?
乾杯,固定它。 – Ray 2009-05-21 20:42:51