Я пытаюсь сериализовать / десериализовать класс из другого пакета, который реализует IEnumerable, но также содержит другие свойства, которые я хотел бы включить в поток сериализации.
public class MyList<T> : IList<T>
{
private List<T> _list;
public Foo Bar { get; set; }
// IList implementation ...
}
Если я применяю [JsonObject]
приписать класс и использовать пользовательский ContractResolver
для сериализации частных полей все работает нормально. Как я уже говорил ранее, класс принадлежит другому пакету, поэтому я не могу применить атрибут к классу.
Я заметил следующий код в документации.
public class ConverterContractResolver : DefaultContractResolver
{
public new static readonly ConverterContractResolver Instance = new ConverterContractResolver();
protected override JsonContract CreateContract(Type objectType)
{
JsonContract contract = base.CreateContract(objectType);
// this will only be called once and then cached
if (objectType == typeof(DateTime) || objectType == typeof(DateTimeOffset))
{
contract.Converter = new JavaScriptDateTimeConverter();
}
return contract;
}
}
Как и яуже использую пользовательский ContractResolver
для сериализации / десериализации частных полей, могу ли я просто переписать предложение if
, чтобы использовать тот же Converter
, который используется при применении JsonObjectAttribute
?