Кажется, что объект RegionInfo
как бы забыт с точки зрения сериализации. CultureInfo
прекрасно работает и сериализуется в и из строки. При попытке добавить объект RegionInfo
я получаю путаницу со всеми свойствами RegionInfo
, которые не могут быть десериализованы, потому что не существует конструктора, который принимает все эти свойства в обратном порядке. Я бы хотел просто сериализовать и десериализовать RegionInfo
s в виде строк, например CultureInfo
, но не могу этого понять.
Моя попытка:
Я создал конвертер regioninfo
public class RegionInfoConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, ((RegionInfo)value).Name);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var token = JToken.Load(reader);
return new RegionInfo(token.ToObject<string>());
}
public override bool CanConvert(Type objectType)
{
return typeof(RegionInfo) == objectType;
}
}
Я вставил это в ConnectionSettings:
var connectionSettings = new ConnectionSettings(pool,
(builtin, settings) => new JsonNetSerializer(
builtin,
settings,
contractJsonConverters: new JsonConverter[] { new RegionInfoConverter() })
);
но я получаю ошибку: object mapping for [region] tried to parse field [region] as object, but found a concrete value
Звучит так, будто одна из моих частей сериализатора неправильная, но я не чувствую, что достаточно понимаю, чтобы понять, какая это часть. Благодаря.