【问题标题】:the easiest way to serialize the object with properties用属性序列化对象的最简单方法
【发布时间】:2013-01-22 12:59:32
【问题描述】:

我有一个ObservableCollection,我想将它保存到二进制文件中。该集合中的一项包含System.Windows.Controls.Image 类型的字段,因此在保存时出现错误:

Type 'System.Windows.Controls.Image' in Assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.

我想我可以尝试将 Image source 转换为 byte[] 变量并保存它,但我还想保存一些 Image 属性,例如我添加的事件处理程序或效果。

有什么简单的方法吗?还是有可能?

【问题讨论】:

  • 您想序列化一个事件处理程序?嗯?
  • @krajol 如前所述,您的数据项不应包含图像控件。您应该将图像属性声明为 ImageSource(并搜索 SO 以获取如何序列化该图像的解决方案),或者如果图像可通过 URL 获得,则应声明为 Uristring。此外,对于其他图像特征(效果等),您必须找到易于序列化的表示。您可以通过描述性字符串定义效果,并定义一组标志来控制附加的事件处理程序,等等。这样你就可以定义一个叫做视图模型的东西。
  • @Clemens 谢谢,我想这就是我所期望的答案。

标签: c# wpf image serialization


【解决方案1】:
【解决方案2】:

您需要通过SurrogateSelector 提供您自己的序列化代理。序列化代理的作用完全取决于您。

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多