我有一个WPF项目,我使用绑定到UI的System.Drawing.Bitmap
属性。这是使用DataContractSerializer
反序列化和序列化的。如果我将其更改为System.Windows.Media.Imaging.BitmapImage
,那么在反序列化后我会得到null StreamSource
?
在查找SO时,我发现序列化BitmapImage
是不可能/不可取的。谁能告诉我为什么不可能?
谢谢。
答案 0 :(得分:1)
直接回答你的问题:Bitmap可以用DataContractSerializer序列化,因为Bitmap实现了ISerializable接口。这意味着Bitmap类的开发人员特别注意实现序列化\反序列化逻辑并使其可供您使用。 BitmapImage类不是这样 - 它甚至没有标记Serializable属性,因此不打算直接序列化。 DataContractSerializer尝试它是最好的,但是它无法在没有指导的情况下序列化诸如StreamSource之类的属性,因为Stream是抽象类,并且它不知道如何序列化\反序列化(假设例如StreamSource是FileStream - 它应该如何处理吗?)。