JsonConverter не используется для определенных типов контейнеров.

У меня есть класс, наследуемый от JsonConverter: JsonDataBagCreationConverter<T> : JsonConverter where T : IDataBag

У меня есть класс Company, который реализует IDataBag

Когда я десериализую одно свойство компании JsonDataBagCreationConverter, вызывается метод ReadJson, как я и ожидал. Когда я десериализую массив Company, метод ReadJson JsonDataBagCreationConverter вызывается, как я и ожидал. Это также работает для общих списков Компании.

Но для некоторых контейнеров Company json.net не распознает, что содержимое списка относится к типу Company. Таким образом, JsonDataBagCreationConverter не используется при десериализации.

т.е. контейнеры типа System.Collections.DictionaryEntry, System.Collections.ArrayList, System.Collections.Hashtable, System.Collections.SortedList, в которых хранятся объекты Company.

Я знаю, что эти контейнеры не являются универсальными. Можно ли заставить (де-)сериализатор просматривать содержимое этих контейнеров и использовать JsonDataBagCreationConverter, когда содержимым является Idatabag (то есть компания)?

С наилучшими пожеланиями

Ян


person Jan Nielsen    schedule 22.10.2012    source источник


Ответы (1)


Удалите where T : IDataBag из конвертера и переопределите CanConvert и напишите свою логику, чтобы проверить там свой тип и соответственно вернуть true или false.

person keyr    schedule 26.11.2012