C# 对象序列化

如果无法将基类标记为可序列化,如何序列化 ac# 类。


我在 c# wpf 应用程序中使用 Caliburn Micro,MyViewModel 源自 Screen ( https://caliburnmicro.com/documentation/composition )。我需要在文件中序列化(Xml序列化器/BinarySerializer/DataContractSerializer)MyViewModel对象,以便稍后使用它。


我可以将 MyViewModel 标记为 [Serializable],但出现异常,基类(来自 calibburn micro 的 Screen)未标记为 [Serializable],因此无法序列化对象。我无法在屏幕中添加属性为 [Serializable],因为它是第三方库。


谁能建议我如何序列化 MyViewModel 对象?


[Serializable]

public class MyViewModel : Screen

{

  // Rest of functionalities

}

我收到异常:在程序集“Caliburn.Micro,Version=3.2.0.0,Culture=neutral,PublicKeyToken=1f2ed21f”中键入“Caliburn.Micro.Screen”未标记为可序列化。


繁华开满天机
浏览 110回答 1
1回答

德玛西亚99

伪代码: 序列化:using (var stream = File.Open(filePath, FileMode.Create))            {                var writer = new DataContractSerializer(myViewModelObject.GetType());                writer.WriteObject(stream, myViewModelObject);                stream.Close();            }反序列化:using (var fs = new FileStream(filePath, FileMode.Open))            {                var reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());                var deserializer = new DataContractSerializer(MyViewModel);                var deserializedType = deserializer.ReadObject(reader, true);                reader.Close();                fs.Close();                return deserializedType;            }
打开App,查看更多内容
随时随地看视频慕课网APP