为了账号安全,请及时绑定邮箱和手机立即绑定

C# 对象序列化

C# 对象序列化

C#
繁华开满天机 2023-08-20 10:08:45
如果无法将基类标记为可序列化,如何序列化 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”未标记为可序列化。
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

伪代码: 序列化:

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;

            }


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信