在.NET中引发奇怪的异常

时间:2008-10-08 13:20:05

标签: .net vb.net exception

异常抛出:“System.ComponentModel.ReflectPropertyDescriptor未标记为可序列化”

这是否意味着我错过了自己标记为可序列化的东西,或者这是我无法控制的东西?

3 个答案:

答案 0 :(得分:4)

您能否提供更多关于何时发生这种情况以及使用哪个序列化程序的背景信息?大多数序列化程序都可以忽略某些成员 - NonSerializedAttributeBinaryFormatterXmlIgnoreAttributeXmlSerializer等。

在您的班级中拥有PropertyDescriptor个实例通常意味着您的班级充当了财产袋;在这种情况下,您可能需要进行自定义序列化(ISerializable / IXmlSerializable)。如果该字段出于其他原因,请将其标记为忽略。

当您有一个UI被挂钩的事件(例如更改通知事件/ INotifyPropertyChanged)时,这个(或类似的症状)也很常见(数据绑定);在这种情况下,您需要将支持字段标记为非序列化。我不知道VB,但是对于C#,你可以用“类似字段的事件”来做到这一点:

[field: NonSerialized]
public event EventHandler BarChanged;

答案 1 :(得分:1)

你班上有这种类型的领域吗?如果是这样,您将不得不自己实现ISerializable - 自动实现要求您的所有字段都标记为Serializable。

答案 2 :(得分:1)

这是你的控制权。最有可能的问题与此相同: http://www.codeplex.com/SharedCache/Thread/View.aspx?ThreadId=19759