uri*_*rig 6 c# dependency-injection idisposable inversion-of-control
假设您有3个实现IDisposable的类 - A,B和C.类A和B都依赖于C类.
说A类和B类的Dispose()的典型实现是:
Run Code Online (Sandbox Code Playgroud)public void Dispose() { if (m_C != null) m_C.Dispose(); }
如果有一个A和B实例共享同一个C实例,你如何克服处理A实例会损坏B实例的问题?
最后一分钟附录 - 如果在第2点,它是一个DI容器,它实例化所有实例,谁负责处理这些对象?它是容器本身吗?怎么样?
谢谢,urig
Jon*_*eet 12
处置模式依赖于有一个成熟的"所有者"来决定何时应该处置资源.
如果A和B需要引用相同的C实例,那么其中只有一个应该作为"所有者".
虽然你可以做什么相当于引用计数,但我通常发现最好只记录谁"拥有"什么.例如,当您Bitmap
使用流创建一个流时,从Bitmap
拥有该流的那一点开始,您不应该自己处理它.这可能会导致一些问题,但最终比尝试挖掘引用计数更简单.
归档时间: |
|
查看次数: |
383 次 |
最近记录: |