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

Aar*_*her 2 c# xml-serialization

我有一个需要从 xml 反序列化的类,它有一个 enum 属性,它作为一个属性存储在 xml 中。有时此属性可能会丢失或具有“”作为值。我怎样才能让序列化程序处理使 BorrowerResidencyType 属性可以为空?

XML:

<_RESIDENCE _StreetAddress="" _City="San Jose" _State="CA" BorrowerResidencyType="" />
<_RESIDENCE _StreetAddress="" _City="San Jose" _State="CA"  />
Run Code Online (Sandbox Code Playgroud)

C#:

[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;}
}
Run Code Online (Sandbox Code Playgroud)

是否有另一个图书馆可以更智能地处理这种情况?

Ric*_*der 5

也许是这样的:

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

    Current,
    Prior
}
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案将使用值空字符串进行序列化。 (2认同)
  • @OlegPolezky:您可以通过在属性上设置 `DefaultValue` 属性来解决这个问题,例如 `[DefaultValue(MyEnumType.Default)]` (2认同)