当前位置:  开发笔记 > 编程语言 > 正文

我可以将DataContractSerializer配置为不在输出XML中创建可选(即Nullable <>和List <>)元素吗?

如何解决《我可以将DataContractSerializer配置为不在输出XML中创建可选(即Nullable<>和List<>)元素吗?》经验,为你挑选了1个好方法。

我正在使用新的.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 Nullable NullableNumber = null;

    [DataMember]
    public int Number = 5;

    [DataMember]
    public List Numbers = new List();
}

当.NET序列化空列表或空列表时,它将nil(对于Nullable)和空(对于列表)元素放入XML中.上面的例子生成:


  
  5
  

由于我没有时间描述的原因,我想消除多余的NullableNumber和Numbers元素,如下所示:


  5

实际上,上面的文件反序列化了串行器就好了.

谢谢你的帮助!



1> Darren Clark..:

标记该字段

   [DataMember(EmitDefaultValue=false)]

这将至少适用于可空值类型的情况.对于List情况,您可能需要在需要时推迟创建列表,否则如果成员在序列化之前为空,则为null.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有