C#暂时取消分配事件处理程序以进行序列化?

时间:2011-06-16 03:45:13

标签: c# events event-handling

我有一个对象图,其中包含一个触发事件的对象。

我想序列化这个图,但是我偶尔会将处理程序插入属于非可序列化类的事件中,我也不希望这些非可序列化对象首先被序列化。

基本上,日历,报告,图表等不可序列化的内容会插入到数据图中,而事件则用于更新等内容。我想序列化我的数据图,但不是我的报告,日历等

当我尝试序列化我的数据图时,如果事件委托不为null,则会出现异常,因为处理类是不可序列化的。我在这些表单中有代码,这样当我关闭它们时,处理程序会断开连接,所以只要我关闭了所有日历,报告等,我就可以保存我的数据图。

逻辑解决方案似乎是:

  1. 设置一个临时变量,该变量等于事件处理程序的当前状态,无论是null还是其他。
  2. 将事件处理程序设置为null。
  3. 序列化我的数据图。
  4. 将事件处理程序设置回原来的状态。
  5. 然而这不起作用,因为我收到编译时错误,告诉我我的事件只能存在于+ =或 - =

    的左侧

    如何在序列化时暂时删除所有处理程序,然后再将其设置回来?

1 个答案:

答案 0 :(得分:4)

您可以尝试将[field:NonSerialized]应用于您的活动吗?