反序列化枚举会产生第一个/错误值

时间:2018-04-24 15:16:40

标签: xml serialization import enums

我正在使用第三方XSD和它的糟糕。但是,所有枚举都没有正确反序列化,它们默认为第一个值。

以下是其中一个枚举的示例

public enum LoanIdentifierBase
{
    NotSet,
    AgencyCase,
    InvestorCommitment,
    InvestorContract,
    InvestorLoan,
    InvestorWorkoutCase,

这是使用此枚举的类

public class LoanIdentifierEnum : BaseClass
{
    [XmlAttribute("SensitiveIndicator")]
    public bool SensitiveIndicator { set; get; }

    [XmlIgnore]
    public bool SensitiveIndicatorSpecified { set; get; }

    [XmlAttribute(Form = XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "NCName")]
    public string label { set; get; }

    [XmlAnyAttribute]
    public XmlAttribute[] AnyAttr { set; get; }


    public LoanIdentifierBase Values { set; get; }
}

我尝试了几种标签和排列,但无论我做什么,所有值都会以未设置的方式返回。

以下是与此

相关联的导入文件

enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的答案,但它有效

public LoanIdentifierBase Values { set; get; }

变为

[XmlText]
public string RealValue { set; get; }

public LoanIdentifierBase Value => (LoanIdentifierBase) Enum.Parse(typeof(LoanIdentifierBase), RealValue);

这样可以将值反序列化为正确的枚举值