Введите краткое описание своих изменений
(Обязательно)
Minor changes are by default collapsed in the page history.
No changes
The page does not exist yet.
Failed to load changes
Версия от на
Leave Collaboration
Are you sure you want to leave the realtime collaboration and continue editing alone? The changes you save while editing alone will lead to merge conflicts with the changes auto-saved by the realtime editing session.
Возможна реализация собственной логики сериализации/десериализации для типа T и использование ее на уровне классов сущностей в виде атрибутов над свойством. (Например для Dictionary)
Необходимо реализовать интерфейс JsonConverter или JsonConverter<T> И либо использовать атрибут [JsonConverter(typeof(ConverterImplementation))] либо задать JsonConverter в свойствах serializer.Converters.Add(new ConverterImplementation()) Если свойства CanRead/CanWrite задать false, то будет использоваться реализация по умолчанию
Сереализатор не может самостоятельно десереализовать абстрактный тип т.к. не знает какую реализацию стоит использовать. Возможное решение: 1) Поместить исходную json строку в context объекта сериализатора. (Тем самым мы получим возможность обратиться к нему из JsonConverter) 2) Создать реализацию JsonConverter, которая будет извлекать json строку из context и выполнять анализ, на основе которого можно было бы разрешить тип абстрактного класса. (используя либо анализ строки, либо анализ JObject, либо десереализацию части объекта) 3) Навесить данный атрибут над свойством с абстрактным типом класса.
Возможна реализация собственной логики сериализации/десериализации для типа T и использование ее на уровне классов сущностей в виде атрибутов над свойством.
(Например для Dictionary)
Необходимо реализовать интерфейс JsonConverter или JsonConverter<T>
И либо использовать атрибут [JsonConverter(typeof(ConverterImplementation))]
либо задать JsonConverter в свойствах serializer.Converters.Add(new ConverterImplementation())
Если свойства CanRead/CanWrite задать false, то будет использоваться реализация по умолчанию
Сереализатор не может самостоятельно десереализовать абстрактный тип т.к. не знает какую реализацию стоит использовать. Возможное решение:
1) Поместить исходную json строку в context объекта сериализатора. (Тем самым мы получим возможность обратиться к нему из JsonConverter)
2) Создать реализацию JsonConverter, которая будет извлекать json строку из context и выполнять анализ, на основе которого можно было бы разрешить тип абстрактного класса. (используя либо анализ строки, либо анализ JObject, либо десереализацию части объекта)
3) Навесить данный атрибут над свойством с абстрактным типом класса.