如何使用Unity作为IoC来自动处理实现了
1. MVC 2. Service 3. Repository(使用Entity Framework实现CRUD操作的工作单元模式)
仓储层中的
IDisposable
接口的类?例如,假设我有一个MVC应用程序,其中包括以下层级结构:1. MVC 2. Service 3. Repository(使用Entity Framework实现CRUD操作的工作单元模式)
仓储层中的
UnitOfWork
类实现了IDisposable
接口,并通过依赖注入(DI)通过Unity注入到服务层。除非我漏掉了什么,否则如果不自动处理UnitOfWork
类的处理,您需要在调用服务的控制器上重写Dispose()
方法(该方法也需要实现IDisposable
),并一直上溯到达到Dispose()
方法或相应存储库(如果您没有使用工作单元模式)。// 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不支持处理IDisposable类型的实例:"只有极少数情况下,Unity才会处置一个实例。这真的是不受支持的",那么在Unity 3.0中是否仍然如此?