我正在使用新的.NET 3.0 DataContractSerializer.我有Nullable < >和List < >对象我要序列化.例:
[DataContract(Namespace = "")] class Test { public static void Go() { Test test = new Test(); var dcs = new DataContractSerializer(typeof(Test)); dcs.WriteObject(new StreamWriter("test.xml").BaseStream, test); } [DataMember] public NullableNullableNumber = null; [DataMember] public int Number = 5; [DataMember] public List Numbers = new List (); }
当.NET序列化空列表或空列表时,它将nil(对于Nullable)和空(对于列表)元素放入XML中.上面的例子生成:
5
由于我没有时间描述的原因,我想消除多余的NullableNumber和Numbers元素,如下所示:
5
实际上,上面的文件反序列化了串行器就好了.
谢谢你的帮助!
标记该字段
[DataMember(EmitDefaultValue=false)]
这将至少适用于可空值类型的情况.对于List情况,您可能需要在需要时推迟创建列表,否则如果成员在序列化之前为空,则为null.