派生自DependencyObject的类可以标记为可序列化吗?

时间:2011-09-03 17:21:45

标签: c# wpf serializable dependencyobject

以下句子是什么意思

DependencyObjects are not marked as serializable 

据我所知,我可以有一个继承自DependencyObject的类......我可以将它标记为可序列化。无论如何序列化属性是不可继承的。

有人能让我清楚吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

存在DependencyObject以使用整个依赖属性系统。这样做的一个副作用是它实际上与.NET中的序列化方法不相符。

序列化,在.NET中,序列化类中的字段。但是,DependencyObjects实际上并不使用(实例)字段,而是注册了DependencyProperties,它们存储在别处(如果有的话)。因此,即使您将它们标记为[Serializable],它们也不会正确序列化。

答案 1 :(得分:2)

这意味着从DependencyObject派生的类无法使用标准序列化程序进行序列化。作为解决方法,您可以使用XamlReader / XamlWriter,如this article中所示。