var container = new UnityContainer(); container.RegisterType<IDbContext, SchoolDbContext>(); container.RegisterType<IObjectTrackingManager, UnitOfWork>(); container.RegisterType<IUnitOfWork, UnitOfWork>(); container.RegisterType<IStudentRepository, StudentRepository>(); container.RegisterType<ITeacherRepository, TeacherRepository>(); container.RegisterType<IStudentService, StudentService>(); _studentService = container.Resolve<IStudentService>();
这两个类型可以共享实例吗?
我实际想要的效果是: 一次http request的生命周期中共享 IDbContext, UnitOfWork 等实例, 不只在_studenttService内也可以, 请求结束后释放, 避免冲突和体积过大.
看到这个帖子之后逛了一圈: http://stackoverflow.com/questions/5187562/mvc-ef-datacontext-singleton-instance-per-web-request-in-unity
最终只需要使用PerResolveLifetimeManager就能解决以上2个问题...
以前都理解错了, 以为PerResolveLifetimeManager只能解决循环引用. 现在明白了, 它的作用就是字面上的意思!