我一直在阅读Rockford Lhotka的“Expert C#2008 Business Objects”,其中有一个数据门户网站可以很好地抽象出数据的来源.当使用DataPortal.Update(this)时,正如您可能猜测的那样,将“this”持久存储到@R_301_457@中,将返回一个对象 – 持久化的“this”以及db对其所做的任何更改,例如.时间戳.
Lhotka经常写得非常随意,你必须确保将对旧对象的所有引用更新为新返回的对象.有道理,但有没有一种简单的方法来查找旧对象的所有引用并更改它们? GC显然跟踪参考文献,是否可以利用它?
干杯
解决方法
GC实际上并不跟踪对象的引用.相反,它计算从运行时的全局和堆栈对象开始可以访问哪些对象,并执行“泛洪填充”算法的某些变体.
特别针对您的问题,为什么不让代理保持对“真实”对象的引用?这样您只需要在一个地方更新.