Я хочу сериализовать и десериализовать объект модели, который наследуется от MvvmLight.ObservableObject
. Попытка десериализации объекта с помощью System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject
выдает System.Runtime.Serialization.InvalidDataContractException
с информацией о том, что базовый класс (т.е. MvvmLight.ObservableObject
) не имеет DataContractAttribute
или SerializableAttribute
. Моя модель, которая не работает, выглядит следующим образом:
using GalaSoft.MvvmLight;
[DataContract]
public class MyModel : ObservableObject
{
[IgnoreDataMember]
private int _id;
[DataMember]
public int Id
{
get => _id;
set => Set(ref _id, value);
}
}
После удаления [DataContract]
нет никаких исключений, но также нет десериализованных данных.
Решением может быть создание копии MyModel
вызывается MyModelSerializable
с теми же свойствами, но они не наследуются от ObservableObject и используют его для сериализации. После десериализации объекты MyModel
могут быть созданы с данными объектов MyModelSerializable
. Есть ли лучшее решение?
Редактировать: По запросу запрашивается ссылка на код GalaSoft.MvvmLight.ObservableObject
: https://github.com/lbugnion/mvvmlight/blob/master/GalaSoft.MvvmLight/GalaSoft.MvvmLight%20(PCL)/ObservableObject.cs