В настоящее время мой сериализованный объект содержит член класса «Настройки»
Теперь я хотел бы расширить свою поддержку и сериализовать любой класс, реализующий интерфейс 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
При десериализации старых данных в мой класс я получаю
Код: Выделить всё
"{"Unable to cast object of type 'System.Object' to type 'JsonSerializer.ISettings'."}"
Могу ли я указать сериализатору, какой тип по умолчанию создать для интерфейса?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/603 ... serializer