Как настроить ServiceStack.Text для использования EnumMember при сериализации в csv или jsv? - PullRequest
0 голосов
/ 24 августа 2018

Это дополнительный вопрос к моему предыдущему вопросу о ServiceStack.Text и десериализации json в .Net перечисления . Ответ на этот вопрос решает, как заставить ServiceStack.Text использовать .Net DataContract и EnumMember для сопоставления строк с перечисляемыми значениями. Сейчас я пытаюсь сериализовать одни и те же перечисления в различные форматы, и, хотя сериализация json работает в обе стороны, как и ожидалось, преобразование csv и jsv игнорирует контракт данных. Есть ли способ настроить ServiceStack.Text (версия 5.1.0, работающая на .Net Core 2.1) таким образом, чтобы следующий код давал одинаковый результат для всех типов вывода и чтобы вывод удовлетворял определенному контракту данных

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)
        {
            var testEnum = TestEnum.EnumValue;

            Console.WriteLine($"To json: {testEnum.ToJson()}");
            Console.WriteLine($"To csv: {testEnum.ToCsv()}");
            Console.WriteLine($"To jsv: {testEnum.ToJsv()}");
            Console.WriteLine($"To xml: {testEnum.ToXml()}");
        }
    }
}

Фактический результат составляет

To json: "enum_value"
To csv: EnumValue
To jsv: EnumValue
To xml: <?xml version="1.0" encoding="utf-8"?><TestClass.TestEnum xmlns="http://schemas.datacontract.org/2004/07/TestNameSpace">enum_value</TestClass.TestEnum>

Хотя я бы хотел видеть enum_value также в выводе csv и jsv. Возможно ли это с помощью ServiceStack.Text?

1 Ответ

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

Теперь должна поддерживаться с эта фиксация доступна с v5.1.1, которая теперь на MyGet .

...