VB.NET中的序列化有点麻烦。如果使用标准的Serializable()属性,并尝试序列化具有附加到处理程序的事件的类,则它也将尝试序列化处理程序。
对VB.NET中创建的类进行序列化的标准方法是什么?
我听说过删除所有处理程序,序列化,然后重新添加所有处理程序,但这难道不会导致事件触发而无法处理吗?
在C#中,解决方案是使用 field: 属性上的前缀。不幸的是,VB不支持 技巧,所以您需要显式地设置事件的支持字段,并对其应用NonSerializedAttribute。 Rocky Lhotka has sample code for this.
field:
不幸的是,它看起来确实非常冗长乏味,因为现在您必须为每个事件详细说明add、remove和raise方法。