Как десериализовать nullable enum с атрибутом EnumMember в ServiceStack.Text? - PullRequest
0 голосов
/ 30 августа 2018

Это дополнительный вопрос к моим двум предыдущим вопросам о ServiceStack.Text : first , second . Как видно из проверки ответов на эти вопросы, можно сериализовать и десериализовать перечисления на основе их контракта данных и EnumMember . Но как насчет нумерованных перечислений, то есть типа EnumType?? Используя ServiceStack.Text, возможно ли сериализовать их, используя атрибут EnumMember? Используя ServiceStack.Text 5.2.0, следующий код:

namespace TestNameSpace
{
    using ServiceStack;
    using System;
    using System.Runtime.Serialization;

    class TestClass
    {
        [DataContract]
        enum TestEnum
        {
            [EnumMember(Value = "enum_value")]
            EnumValue = 0,
        }

        static void Main(string[] args)
        {
            TestEnum? nullableEnum = TestEnum.EnumValue;
            Console.WriteLine($"nullableEnum.ToJson: {nullableEnum.ToJson()}");
            Console.WriteLine($"nullableEnum.ToCsv: {nullableEnum.ToCsv()}");
            Console.WriteLine($"nullableEnum.ToJsv: {nullableEnum.ToJsv()}");
            Console.WriteLine($"nullableEnum.ToXml: {nullableEnum.ToXml()}");
        }
    }
}

печатает следующее:

nullableEnum.ToJson: "EnumValue"
nullableEnum.ToCsv: EnumValue
nullableEnum.ToJsv: EnumValue
nullableEnum.ToXml: <?xml version="1.0" encoding="utf-8"?><TestClass.TestEnum xmlns="http://schemas.datacontract.org/2004/07/TestNameSpace">enum_value</TestClass.TestEnum>

в то время как я ожидаю, что все выходные форматы будут иметь enum_value. Можно ли добиться этого с помощью ServiceStack.Text?

1 Ответ

0 голосов
/ 30 августа 2018

Теперь должно быть разрешено с this commit . Это изменение доступно с v5.2.1, которое теперь доступно на MyGet .

...