c# - 如果可为 null 的属性为 null 或为空,如何从序列化中忽略它?

标签 c# asp.net xml serialization

我有一个用于 Xml 序列化的类。

在其中我有一个用 XmlAttribute 装饰的可为空的属性:

 [XmlAttribute("lastUpdated")]
 public DateTime? LastUpdated { get; set; }

如果属性为 null 或为空,如何从序列化中忽略它?

我已经尝试了下面的但是当有一个值时它不会序列化(总是忽略):

  [XmlIgnore]
        public DateTime? LastUpdatedValue { get; set; }

        [XmlAttribute("lastUpdated")]
       public DateTime LastUpdated { get; set; }

        public bool ShouldSerializeLastUpdated()
        {
            return LastUpdatedValue.HasValue;
        }

最佳答案

XmlSerialization 不直接支持 Nullable。

如果您想使用可空属性,您必须使用不可空属性并添加一个与属性同名的 bool 属性,后缀“Specified”指定属性何时必须可序列化。

您的案例示例:

    private DateTime? _lastUpdated;

    [XmlAttribute("lastUpdated")]
    public DateTime LastUpdated {
        get {
            return (DateTime)_lastUpdated;
        }
        set
        {
            _lastUpdated = value;
        }
    }

    public bool LastUpdatedSpecified
    {
        get
        {
            return _lastUpdated.HasValue;
        }
    }

关于c# - 如果可为 null 的属性为 null 或为空,如何从序列化中忽略它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172581/

相关文章:

c# - 创建内部边框

SQL Server 将 xml 值读取为空字符串

c# - 删除数据网格中的行选择器

C#-运行Hadoop_job-报错(C#)

c# - 使用 servicestack 创建客户端身份验证服务?

javascript - 如何使用javascript将数据从asp.net中的listview导出到pdf

asp.net - 如何防止 ?Area= 添加到生成的 URL 中

c# - 使用 C# .Net 可被 60 整除的任何数字的正则表达式?

xml - 在 Clojure 的 XML 文件中插入 Zipper 树

C# 将 XML 数据存入字典