c# – 将对象与另一个对象关联以进行GC清除

有没有办法以一般化的方式将对象实例(对象A)与第二个对象(对象B)相关联,这样当收集B时,A变得可以收集?如果B有一个指向A的实例变量,但是没有显式更改B的类定义,并且能够以动态方式执行此操作,则会发生相同的行为?

通过以时髦的方式使用Component.Disposed事件可以完成同样的效果,但我不想让B一次性使用

编辑

我基本上是创建一个与单个“根”对象相关联的对象缓存,我不希望缓存是静态的,因为可能有很多根对象使用不同的缓存,所以很多内存将是在不再使用根对象但仍然存在缓存对象时用完.

因此,我希望将一组缓存对象与每个“根”对象相关联,而不更改根对象定义.类似于附加到每个根对象实例的额外对象引用的元数据.这样,收集根对象时将收集每个集合,而不会像使用静态缓存时那样挂起.

最佳答案 简短的回答:可能不是.你能解释一下你想要做的更多吗? WeakReference可能是你需要的.

点赞