我想序列化和反序列化从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]
之后,没有例外,但是也没有反序列化的数据。
一个解决方案可能是创建具有相同属性但不继承自ObservableObject的MyModel
副本MyModelSerializable
,并将其用于序列化。反序列化之后,可以使用MyModel
对象的数据来创建MyModelSerializable
对象。有更好的解决方案吗?
编辑:按要求链接到GalaSoft.MvvmLight.ObservableObject
:https://github.com/lbugnion/mvvmlight/blob/master/GalaSoft.MvvmLight/GalaSoft.MvvmLight%20(PCL)/ObservableObject.cs