一千萬個為什麽

搜索

是否所有公共讀/寫成員都使用XmlSerializer序列化?

我有一些被序列化的公共讀/寫成員,我無法弄清楚原因。查看一些代碼,我的根類標記為可序列化:

[Serializable]
public class MyClass

我有一個默認構造函數,初始化10-15 string 成員。在MyClass中有大約50個公共讀/寫字符串成員使用get和set - 沒有在任何這些上設置顯式序列化屬性。序列化如下所示:

XmlSerializer x = new XmlSerializer(typeof(MyClass));
TextWriter twWriter = new StreamWriter(sFileName);
x.Serialize(twWriter, this);
twWriter.Close();

這些成員中只有少數(20-30個)實際上被封裝到我的xml文件中。我對 XmlSerializer 類缺少什麽或誤解了什麽?

最佳答案

您可以通過在 XmlElement 屬性上將 IsNullable 設置為 true 來強制在輸出中序列化 null 屬性。

public class Example
{
    [XmlElement(IsNullable=true)]
    public string Text { get; set; }
}

The Text property will now be serialized as .

另外,如果您只進行XML序列化,則不需要 [Serializable] 屬性。

轉載註明原文: 是否所有公共讀/寫成員都使用XmlSerializer序列化?