很惊讶这个问题在这里还没有被问到,但是这里有:
VB.NET中的序列化有点痛苦。如果您使用标准的Serializable()属性,并尝试序列化具有附加到处理程序的事件的类,它也将尝试序列化处理程序。
来自C#背景我不习惯处理这个问题,我能找到的最佳解决方案是使用CodeProject的类。
但是我不想改变这个想法的对象继承结构。
在VB.NET中创建类的序列化的标准方法是什么?
我听说过删除所有处理程序,序列化,然后重新添加所有处理程序,但这不会导致事件触发而不会被处理?
答案 0 :(得分:2)
在C#中,解决方案是使用属性上的field:
前缀将NonSerializedAttribute应用于事件的后备字段。遗憾的是,VB不支持field:
技巧,因此您需要使事件的支持字段显式化,并将NonSerializedAttribute应用于该字段。 Rocky Lhotka has sample code for this.
不幸的是,它确实看起来相当冗长乏味,因为现在你必须为每个事件拼出添加,删除和引发方法。