VB.NET难以序列化附加事件的类

时间:2010-01-27 21:14:16

标签: vb.net events serialization

很惊讶这个问题在这里还没有被问到,但是这里有:

VB.NET中的序列化有点痛苦。如果您使用标准的Serializable()属性,并尝试序列化具有附加到处理程序的事件的类,它也将尝试序列化处理程序。

来自C#背景我不习惯处理这个问题,我能找到的最佳解决方案是使用CodeProject的类。

但是我不想改变这个想法的对象继承结构。

在VB.NET中创建类的序列化的标准方法是什么?

我听说过删除所有处理程序,序列化,然后重新添加所有处理程序,但这不会导致事件触发而不会被处理?

1 个答案:

答案 0 :(得分:2)

在C#中,解决方案是使用属性上的field:前缀将NonSerializedAttribute应用于事件的后备字段。遗憾的是,VB不支持field:技巧,因此您需要使事件的支持字段显式化,并将NonSerializedAttribute应用于该字段。 Rocky Lhotka has sample code for this.

不幸的是,它确实看起来相当冗长乏味,因为现在你必须为每个事件拼出添加,删除和引发方法。