我試圖像如下序列化類型:如果實現對象不是Serializable,那麼如何序列化基礎對象?
public UsersPanel(UsersVM userVm)
{
var serialized = Serialize(userVm);
}
public static string Serialize(ViewModelBase instance)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, instance); // breaks here
return Convert.ToBase64String(stream.ToArray());
}
}
凡UsersVM
被定義爲
public class UsersVm : ViewModelBase {}
和ViewModelBase
被定義爲
[Serializable]
public class ViewModelBase {}
這是給我下面的錯誤:
Type 'UsersVM' is not marked as serializable.
爲什麼它告訴我,如果我已將對象userVm
轉換爲ViewModelBase
(其中是標記爲可序列化),將其傳遞到Serialize(ViewModelBase instance)
?
我認爲在將UsersVM
傳遞給需要ViewModelBase
的方法時,UsersVM
將被基類型ViewModelBase
取代。
如何序列化ViewModelBase?
當你序列化的時候,你是否嘗試過轉換爲基礎對象?例如var serialized = Serialize(userVm作爲ViewModelBase); – Jonathan 2012-07-25 16:09:45
@Jonathan:不幸的是BinaryFormatter仍然會抱怨,因爲基類沒有標記爲可序列化。 – 2012-07-25 16:10:38
或者只是實現ISerializable?嘗試在你的課堂上寫[Serializable]。如果這對你有幫助,我會很樂意提供它作爲答案。 – 2012-07-25 16:10:42