我有一个实现IDisposable的autofac模块。该模块已使用containerBuilder.RegisterModule <>方法注册,并在container.Build期间得到解析。但是:容器被丢弃时,模块上不会调用Dispose。 这是一个错误,还是我错过了什么?
我已经用Autofac 4.6.2和4.8.1复制了此代码,但没有测试其他版本。
答案 0 :(得分:1)
不打算处置模块。 ILifetimeScope
实现实现了Autofac和一次性组件之间的链接。
一个模块基本上是一个带有Load方法的盒子,该盒子只执行一次。
Load方法完成后,必须完成该模块。
因此,如果您有任何资源要保留并在以后处置,则应在生命周期管理options之一中将其保留(并处置)。
因此,您可以说这是一个错误,但是我个人认为这只是功能的一种情况,对于模块的预期用途并不需要(最后一句话仅是我个人的看法)。
如果您想描述(也许是另一个问题?)您要使用一次性模块解决的实际问题是什么,我们可以进行讨论。