我想序列化和反序列化从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
如果无法使用DataContract标记ObservableObject,则不能在此处使用DataContract属性。所以在您的情况下,我认为您无法标记ObservableObject。