Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在xml和c中处理null#_C#_Xml Serialization - Fatal编程技术网

C# 如何在xml和c中处理null#

C# 如何在xml和c中处理null#,c#,xml-serialization,C#,Xml Serialization,假设我正在尝试将xml反序列化到我的类中,如果任何值对于decimal或datetime为null或空,那么如何处理null [XmlElement(ElementName = "Salary" , typeof(double))] public string Salary { get; set; } [XmlElement(ElementName = "BirthDate" , typeof(DateTime))] public string Phone { get; set; } 假设x

假设我正在尝试将xml反序列化到我的类中,如果任何值对于decimal或datetime为null或空,那么如何处理null

[XmlElement(ElementName = "Salary" , typeof(double))]
public string Salary { get; set; }

[XmlElement(ElementName = "BirthDate" , typeof(DateTime))]
public string Phone { get; set; }
假设xml中的生日或薪水为null或空,那么在反序列化时如何处理它。需要解决。谢谢。

用它的可空类型替换“double”,相当于“double?”应该可以。然后简单地处理对象中缺少值的问题

或者,您可以实现垫片属性:


使用Nullabe类型将轻松解决问题。

您可以使用Microsoft企业库验证应用程序块。或者只需将类型更改为可空。

您有两个选项,如中所述

指定以指定默认值

[System.ComponentModel.DefaultValueAttribute ("0")]
[XmlElement(ElementName = "Salary" , typeof(double))]
public string Salary { get; set; }

[System.ComponentModel.DefaultValueAttribute ("02-May-2011")]
[XmlElement(ElementName = "BirthDate" , typeof(datetime))]
public string Phone { get; set; }

另一个选项是使用特殊模式创建XmlSerializer识别的布尔字段,并将XmlIgnoreAttribute应用于该字段。模式以propertyNameSpecified的形式创建。例如,如果有一个名为“MyFirstName”的字段,您还将创建一个名为“MyFirstNameSpecified”的字段,该字段指示XmlSerializer是否生成名为“MyFirstName”的XML元素。

什么是shim属性。详细讨论。@user728750-类似于此公共可空条{get;set;}