我有一个对象(委托)需要保持活动状态(不是垃圾收集),而另一个对象(目标对象)是活动的。我希望在收集 TargetObject 时对 Delegate 进行垃圾收集(或至少可用于收集)。
困难在于我不想从 TargetObject 引用 Delegate,因为我希望它适用于不知道 Delegate 的现有对象,并且我不想影响 TargetObject 的生命周期。这是可能吗?
谢谢。
编辑:感谢到目前为止的回复。我会尽量澄清我在做什么。
我正在尝试实现弱事件,但我不是 WeakEventManager(尤其是 IWeakEventListener)的粉丝。我想持有对指向对象 TargetObject 中的方法的委托事件处理程序 (Delegate) 的弱引用。在 TargetObject 存活时需要对 Delegate 进行强引用以保持 Delegate 存活,但如果生命周期较长的东西引用 Delegate,它会使 TargetObject 保持存活(违背了弱事件的目的)。
如果订阅弱事件的对象不必具有任何特殊的实现细节(例如必须保留委托集合),那就太好了。
编辑编辑:将“A”更改为“Delegate”,将“B”更改为“TargetObject”