Можно ли повторить поведение JsonObjectAttribute? - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь сериализовать / десериализовать класс из другого пакета, который реализует 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?

...