我有一個類,其中包含一些集合,並且我想將此類的實例序列化爲XML,而無需將集合初始化爲空,而無需實現IXmlSerializable。我不在乎它是否創建空元素,或者根本不創建元素。只需要它不需要爲每個基於集合的屬性初始化一個集合。.NET XML序列化和空集合
我已經看過所有可用於裝飾屬性的XML屬性,並且沒有任何成功。這似乎是一個簡單的事情,可以有一個元素或根本沒有。然後,當它被反序列化時,它會讓它們爲空或者忽略它們。
以下是用於解決此問題的類的簡單版本。使用這個和默認值,你會得到一個異常「對象引用沒有設置到對象的實例」,因爲集合爲空;
public class MyClass
{
public string Name { get; set; }
public bool IsAlive { get; set; }
public List<Car> Cars { get; set; }
public List<Home> Homes { get; set; }
public List<Pet> Pets { get; set; }
public void ToXmlFile(string fileName)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
TextWriter writer = new StreamWriter(fileName);
serializer.Serialize(writer, this);
writer.Close();
}
}
編輯 感謝您的幫助傢伙,原來的問題是在我的GetHashCode方法,它沒有正確處理空值。一旦我解決這一切都很好。我標記了第一個答案是正確的。對不起,紅鯡魚,但與你們一起努力,幫助你們。
這是什麼問題?這應該起作用(至少序列化和反序列化);你不喜歡什麼樣的行爲? – 2010-01-26 23:50:41
我無法重現你聲稱得到的異常。我能夠序列化和反序列化你的確切MyClass的一個實例,就像你給它的那樣。也許還有別的事情呢? – 2010-01-27 00:00:09
@布賴恩是的其他事情正在發生,感謝所有的快速幫助,並顯示它不是XML代碼本身。 :) – 2010-01-27 00:16:57