您如何IDisposable
使用 Unity 作为 IoC 自动处置通过 DI 新增的实现类?
例如,假设我有一个具有以下层的 MVC 应用程序:
- MVC
- 服务
- 存储库(为 CRUD 操作实现工作单元模式的实体框架)
存储库层中的一个UnitOfWork
类实现IDisposable
接口,并通过 Unity 使用 DI 注入服务层。除非我遗漏了某些东西,否则在不自动处理UnitOfWork
类的情况下,您需要覆盖Dispose()
调用服务的控制器上的方法(也需要实现IDisposable
),并在堆栈中冒泡,直到您到达(或相应的)Dispose()
上的方法UnitOfWork
如果您没有使用工作单元模式,则存储库)。
例如
// controller
protected override void Dispose(bool disposing)
{
if (_serviceLayer != null)
{
_serviceLayer.Dispose();
}
base.Dispose(disposing);
}
// service layer
public override Dispose() {
if (_uow != null)
{
_uow.Dispose();
}
}
// unit of work
public void Dispose() {
if (_context != null)
{
_context.Dispose();
}
}
该线程表明它不受支持?“只有少数情况下 Unity 会处理实例。它真的不受支持” Unity 3.0 仍然如此。