Десериализация перечисления дает первое / неправильное значение - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю с сторонним 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 голосов
/ 25 апреля 2018

Это глупый ответ, но он работает

public LoanIdentifierBase Values { set; get; }

Становится

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

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

И это позволяет десериализировать значение в правильное значение перечисления

...