C# 如何将可空枚举序列化为属性

C# 如何将可空枚举序列化为属性,c#,xml-serialization,C#,Xml Serialization,我有一个需要从xml反序列化的类,它有一个作为属性存储在xml中的enum属性。有时此属性可能丢失或将“”作为值。 如何让序列化程序处理使BorrowerResidencyType属性为空的问题 XML: C#: [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.0.30319.17929”)] [System.SerializableAttribute()] [System.Xml.Serialization.X

我有一个需要从xml反序列化的类,它有一个作为属性存储在xml中的enum属性。有时此属性可能丢失或将“”作为值。 如何让序列化程序处理使BorrowerResidencyType属性为空的问题

XML:


C#:

[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.0.30319.17929”)]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum\u住宅brower住宅类型
{
/// 
现在的
/// 
先前,
}
公开课考试{
公共字符串StreetAddress{get;set;}
公共字符串City{get;set;}
[System.Xml.Serialization.XmlAttributeAttribute()]
public _ResidenceBrowerResidenceTypeBorrowerResidencyType{get;set;}
}
是否有其他库可以更智能地处理这种情况?

可能类似于:

public enum _RESIDENCEBorrowerResidencyType
{
    [XmlEnum(Name="")]
    Default = 0,

    Current,
    Prior
}

此解决方案将使用值空字符串进行序列化。@OlegPolezky:您可以通过在属性上设置
DefaultValue
属性来解决此问题,例如
[DefaultValue(MyEnumType.Default)]
[System.CodeDom.Compiler.GeneratedCodeAttribute ( "System.Xml", "4.0.30319.17929" )]
[System.SerializableAttribute ()]
[System.Xml.Serialization.XmlTypeAttribute ( AnonymousType = true )]
public enum _RESIDENCEBorrowerResidencyType
{

    /// <remarks/>
    Current,

    /// <remarks/>
    Prior,
}

public class Test{
public string StreetAddress{get;set;}
public string City{get;set;}
[System.Xml.Serialization.XmlAttributeAttribute ()]
public _RESIDENCEBorrowerResidencyType BorrowerResidencyType{get;set;}
}
public enum _RESIDENCEBorrowerResidencyType
{
    [XmlEnum(Name="")]
    Default = 0,

    Current,
    Prior
}