2010-10-20 36 views
3

handling tombstoning in Wp7 by dumping my ViewModel進入PhoneApplicationService狀態(請參閱此link for more info)。問題與MVVMLight ViewModelBase WP7的繼承基類中的公共無參數構造函數墓碑

我的ViewModel(VM)繼承自MVVM Light Toolkit(ViewModelBase),它只有一個受保護的無參數構造函數。

這將導致serilization失敗,:

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

原諒我的無知,但序列化是新的我 - 我想我明白爲什麼它的失敗,但我想嘗試它周圍的方式。例如,我可以將整個基類標記爲非可serilizable,或者像我在類([IgnoreDataMember])中執行某些字段一樣忽略它?我不需要存儲這個類中的任何東西。

反正是有解決這個?我不想編輯該程序集的來源以將其標記爲公開而非保護。

回答

4

抽象類中的公共默認構造函數被StyleCop所不贊成,這就是爲什麼我使ViewModelBase受保護的原因。正如你發現的那樣,這會導致序列化問題。在WP7中,這個問題更加尖銳,因爲它傾向於將整個虛擬機以序列化方式安全存放。

現在,我唯一可以提出的解決方案是實現您自己的viewmodelbase類。我將考慮在未來的版本中將構造函數更改爲public。

乾杯, 洛朗

+0

感謝您的解釋洛朗,非常感謝!我已經複製並更改了它。 – Rodney 2010-10-20 21:20:42

+0

六年前,我撞到了同一堵牆......:/ – 2016-04-20 00:35:43