【发布时间】:2010-09-16 00:17:14
【问题描述】:
抛出异常:“System.ComponentModel.ReflectPropertyDescriptor 未标记为可序列化”
这是否意味着我自己错过了将某些东西标记为可序列化,或者这超出了我的控制范围?
【问题讨论】:
-
事实证明,这是数据绑定的问题。我能够消除它。感谢您的帮助。
抛出异常:“System.ComponentModel.ReflectPropertyDescriptor 未标记为可序列化”
这是否意味着我自己错过了将某些东西标记为可序列化,或者这超出了我的控制范围?
【问题讨论】:
一切尽在您的掌控之中。问题很可能与此相同: http://www.codeplex.com/SharedCache/Thread/View.aspx?ThreadId=19759
【讨论】:
您能否提供更多关于何时发生这种情况以及使用哪个序列化程序的上下文?大多数序列化程序都可以忽略某些成员 - NonSerializedAttribute 代表 BinaryFormatter,XmlIgnoreAttribute 代表 XmlSerializer,等等。
在你的类中有一个PropertyDescriptor 实例通常意味着你的类正在充当一个属性包;在这种情况下,您可能需要进行自定义序列化 (ISerializable/IXmlSerializable)。如果该字段因其他原因而存在,只需将其标记为忽略即可。
当您有一个事件(例如更改通知事件/INotifyPropertyChanged)与 UI 挂钩(数据绑定)时,这种(或类似的症状)也很常见;在这种情况下,您需要将支持字段标记为非序列化。我不了解 VB,但是使用 C#,您可以使用“类似字段的事件”来做到这一点:
[field: NonSerialized]
public event EventHandler BarChanged;
【讨论】:
[NonSerialized] isn't working for my event. Missing the field:`。
您的班级中有这种类型的字段吗?如果是这样,您必须自己实现 ISerializable - 自动实现要求您的所有字段都标记为 Serializable。
【讨论】: