小编典典

您如何调和IDisposable和IoC?

c#

最后,我终于用C#围绕IoC和DI展开了自己的研究,并在某些方面苦苦挣扎。我正在使用Unity容器,但我认为这个问题适用范围更广。

使用IoC容器分配实现IDisposable的实例会让我大吃一惊!您应该如何知道是否应该使用Dispose()?该实例可能只是为您创建的(因此,您应该对其进行Dispose()),或者它可能是一个实例的生命周期在其他地方进行管理(因此最好不要这样做)。代码中没有任何内容告诉您,实际上这可能会根据配置而改变!!!这对我来说似乎是致命的。

是否有任何IoC专家可以描述解决这种歧义的好方法?


阅读 273

收藏
2020-05-19

共1个答案

小编典典

AutoFac通过允许创建嵌套容器来处理此问题。容器完成后,它将自动处理其中的所有IDisposable对象。这里更多。

..解决服务时,Autofac会跟踪已解决的一次性(IDisposable)组件。
在工作单元结束时,您将处置关联的生存期范围,并且Autofac将自动清理/处置已解决的服务。

2020-05-19