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

是否有一个属性可以在c#的xml-serialization中跳过空数组?

如何解决《是否有一个属性可以在c#的xml-serialization中跳过空数组?》经验,为你挑选了1个好方法。

是否有一个属性可以在c#的xml-serialization中跳过空数组?这将增加xml输出的人类可读性.



1> Marc Gravell..:

好吧,你也许可以添加一个ShouldSerializeFoo()方法:

using System;
using System.ComponentModel;
using System.Xml.Serialization;
[Serializable]
public class MyEntity
{
    public string Key { get; set; }

    public string[] Items { get; set; }

    [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
    public bool ShouldSerializeItems()
    {
        return Items != null && Items.Length > 0;
    }
}

static class Program
{
    static void Main()
    {
        MyEntity obj = new MyEntity { Key = "abc", Items = new string[0] };
        XmlSerializer ser = new XmlSerializer(typeof(MyEntity));
        ser.Serialize(Console.Out, obj);
    }
}

ShouldSerialize{name}已识别该模式,并调用该方法以查看是否在序列化中包含该属性.还有一种替代{name}Specified模式,允许您在反序列化时(通过setter)检测事物:

[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[XmlIgnore]
public bool ItemsSpecified
{
    get { return Items != null && Items.Length > 0; }
    set { } // could set the default array here if we want
}

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