我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])一样吗?我不需要存储此类中的任何内容。
这周围有吗?我不想编辑该程序集的源代码以将其标记为公共而不是受保护。
答案 0 :(得分:4)
抽象类中的公共默认构造函数受到StyleCop的不满,这就是我对ViewModelBase进行保护的原因。如您所知,这会导致序列化问题。这个问题在WP7中更为尖锐,因为它很容易将整个vm转储到序列化中以便安全保存。
现在,我可以提出的唯一解决方案是实现自己的viewmodelbase类。我将考虑在将来的版本中将构造函数更改为public。
干杯, 劳伦