У меня возникли проблемы с пониманием проблемы, которую я получаю с Json.Net на Mac. Я пытаюсь сериализовать/десериализовать объекты, как показано ниже.Json.Net (8.0) Ошибка при создании StringEnumConverter на Mono 4.5 Mac
Код работает без проблем в Windows, но генерирует Newtonsoft.Json.JsonException «Ошибка создания StringEnumConverter» на Mac (также показано на изображении). Я надеюсь, что кто-то увидит что-то в коде или сообщении об ошибке, которое может указать мне в правильном направлении. Объект содержит еще много полей, но ошибка звучит так, как будто это имеет какое-то отношение к перечислениям. Я строил в Xamarin 6/Mono .Net 4.5, и я использую Json.Net 8.0.3 для .Net 4.5. Любая помощь очень ценится.
Edit 1: Удаление JsonConverter (TypeOf (StringEnumConverter)) украшение исключает исключение - однако, перечислений упорядочиваются в виде целых чисел снова.
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace Lib
{
[DataContract(IsReference = true)]
public class Construction : LibraryComponent
{
public Construction() { }
public override string ToString() { return Serialization.Serialize(this); }
[DataMember]
public string Construction { get; set; } = "defaultConstruction";
...
[DataMember, JsonConverter(typeof(StringEnumConverter)), DefaultValue(InConvAlgo.TARP)]
public InConvAlgo SurfaceConvectionModelInside { get; set; } = InConvAlgo.TARP;
[DataMember, JsonConverter(typeof(StringEnumConverter)), DefaultValue(OutConvAlgo.DOE2)]
public OutConvAlgo SurfaceConvectionModelOutside { get; set; } = OutConvAlgo.DOE2;
...
[DataMember, DefaultValue(1)]
public int Priority { get; set; } = 1;
}
public enum InConvAlgo { Simple, TARP, TrombeWall, AdaptiveConvectionAlgorithm };
public enum OutConvAlgo { DOE2, TARP, MoWiTT, SimpleCombined, AdaptiveConvectionAlgorithm }; // DOE-2,
}