在.NET中抛出奇怪的异常

4

抛出异常:"System.ComponentModel.ReflectPropertyDescriptor未标记为Serializable"

这是否意味着我自己错过了将某些内容标记为可序列化,还是这是我无法控制的事情?


事实证明,这是一个数据绑定的问题。我已经解决了它。感谢您的帮助。 - Joe Morgan
3个回答

4
你能否提供更多关于何时发生以及使用哪个序列化程序的上下文?大多数序列化程序都可以忽略某些成员,例如BinaryFormatterNonSerializedAttributeXmlSerializerXmlIgnoreAttribute等。
在你的类中拥有一个PropertyDescriptor实例通常意味着你的类作为属性包而运行;在这种情况下,你可能需要进行自定义序列化(ISerializable/IXmlSerializable)。如果该字段存在其他原因,请将其标记为要忽略的字段。
当你有一个事件(例如更改通知事件/INotifyPropertyChanged)被UI挂钩(数据绑定)时,这种情况(或类似症状)也很常见;在这种情况下,你需要将支持字段标记为非序列化。我不知道VB如何处理,但是在C#中,你可以使用"field-like events"来实现:
[field: NonSerialized]
public event EventHandler BarChanged;

facepalm 我一直在屏幕上摔脸,想知道为什么 [NonSerialized] 对我的事件不起作用。原来是缺少了 field: - Joel Etherton

1

你的类中有这种类型的字段吗?如果是这样,你将不得不自己实现ISerializable接口——自动实现要求你的所有字段都标记为Serializable。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接