使用用户身份验证的默认ASP.NET MVC5模板正在使用app.CreatePerOwinContext注册服务。喜欢:
app.CreatePerOwinContext<DbContext>(DbContext.Create)
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create)
然后在很多地方我们只能看到服务定位器模式(或反模式):
UserManager = _userManager ?? HttpContext.GetOwinContext().Get<ApplicationUserManager>();
它使代码不可测试并扩展例如。 ApplicationUserManager
注入一些自定义服务当然也需要服务位置。
我是否可以通过使用Autofac
,Ninject
等IoC容器完全摆脱此代码?我的意思是我会删除app.CreatePerOwinContext
内容,并将其注册到我使用的IoC容器中。然后我通常会通过构造函数注入将它们注入控制器/服务。
用app.CreatePerOwinContext
替换container.Register
然后将我的容器设置为默认依赖性解析器是否可以?