如何使用内部委托克隆对象

本文关键字:对象 何使用 内部 | 更新日期: 2023-09-27 18:31:49

我为化学分析仪器编写了一个序列转换器。我将每一行视为一个对象,将该对象的每个字段视为另一个对象。当一行添加到列表中时,我需要对某些字段对象(如顺序编号)进行一些更新,因此我实现了指向该行中每个字段对象的委托。当我尝试克隆行对象时出现问题,委托仍然指向原始对象,只是更新字段成员。我尝试取消注册克隆上的侦听器并将其重新注册,但它仍然在源对象上运行代码。我是否应该取消注册所有侦听器,然后制作克隆并将其重新注册到源和克隆上?最好的方法是什么?

第二个问题:我尝试使用 Delegate.RemoveAll 函数,但不知道要传递什么。它说目标和方法作为代表。有人用过吗?

如何使用内部委托克隆对象

使用委托使对象成为有状态的,而不是无状态的。要实现无状态对象,它需要其所有属性都是自包含的,以便克隆操作可以做到这一点,成为克隆而不是原始对象。

由于它是一个有状态的对象,因此需要创建一个管理对象(或复制构造函数),它可以智能地遍历原始对象并重新创建新对象,而无需原始对象的委托,而是自己的正确委托。