Сериализация и обратная совместимость (DataContractJsonSerializer)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сериализация и обратная совместимость (DataContractJsonSerializer)

Сообщение Anonymous »

Я использую DataContractJsonSerializer.

В настоящее время мой сериализованный объект содержит член класса «Настройки»

Теперь я хотел бы расширить свою поддержку и сериализовать любой класс, реализующий интерфейс ISettings.

Код: Выделить всё

[DataContract(Namespace = "")]
[KnownType(typeof(SystemSettings))]
[KnownType(typeof(PrivateSettings))]
public class Data
{
[DataMember]
public ISettings settings { get; set; }
}

public interface ISettings
{
}

[DataContract(Namespace = "")]
public class SystemSettings : ISettings
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string SysName { get; set; }
}
[DataContract(Namespace = "")]
public class PrivateSettings : ISettings
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string PrivateName { get; set; }
}
Это прекрасно работает, поскольку сериализованные данные содержат тип объекта

Код: Выделить всё



System Settings
New System


Моя проблема связана с обратной совместимостью. Существующие сериализованные файлы не содержат тип объекта (__type="SystemSettings").
При десериализации старых данных в мой класс я получаю

Код: Выделить всё

"{"Unable to cast object of type 'System.Object' to type 'JsonSerializer.ISettings'."}"
Есть ли способ решить эту проблему?
Могу ли я указать сериализатору, какой тип по умолчанию создать для интерфейса?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/603 ... serializer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сериализация и обратная совместимость (DataContractJsonSerializer)
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Обратная совместимость itertools.pairwise и сомнительное предупреждение Pylance
    Anonymous » » в форуме Python
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous
  • Обратная совместимость MySQL JDBC
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • CXF 4 обратная совместимость
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Версии WebSocket и обратная совместимость
    Anonymous » » в форуме Html
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»