是否所有公共读/写成员都使用XmlSerializer序列化?

时间:2010-04-16 15:16:42

标签: c# .net xml serialization

我有一些被序列化的公共读/写成员,我无法弄清楚原因。查看一些代码,我的根类标记为可序列化:

[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班级缺少什么或误解了什么?

2 个答案:

答案 0 :(得分:3)

您可以通过在null属性上将IsNullable设置为true来强制在输出中序列化XmlElement属性。

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

Text属性现在将被序列化为<Text xsi:nil="true" />

另外,如果您只进行XML序列化,则不需要[Serializable]属性。

答案 1 :(得分:0)

实际上,如果它们为null,则不会序列化。