handling tombstoning in Wp7 by dumping my ViewModel进入PhoneApplicationService状态(请参阅此link for more info)。

我的ViewModel(VM)继承自MVVM Light Toolkit(ViewModelBase),该工具包仅具有受保护的无参数构造函数。

这将导致序列化失败并显示以下内容:

"The type 'GalaSoft.MvvmLight.ViewModelBase' cannot be deserialized in partial trust because it does not have a public parameterless constructor."


请原谅我的无知,但是序列化对我来说是新的-我想我理解为什么它会失败,但是我正在尝试思考解决方法。例如,是否可以像在类中[[IgnoreDataMember])中的某些字段一样将整个基类标记为不可序列化或被忽略?我不需要存储此类中的任何内容。

有没有办法解决?我不想编辑该程序集的源以将其标记为公开而不是受保护。

最佳答案

StyleCop不赞成抽象类中的公共默认构造函数,这就是为什么我将ViewModelBase设置为受保护的原因。如您所知,这会导致序列化问题。在WP7中,此问题更为严重,在WP7中,为了安全保留,它倾向于将整个vm转储为序列化。

现在,我只能提出的唯一解决方法是实现自己的viewmodelbase类。我将考虑在将来的版本中将构造函数更改为public。

干杯,
劳伦特

10-05 21:42