目前,我有一个MVC应用程序,其中还包含WebApi控制器。
我已经将StructureMap设置为使用默认约定进行初始化,该约定处理MVC和WebApi的服务依赖关系。所有这一切都完美。
但是,我有一个身份验证服务依赖项,应该为WebApi注入,为MVC提供另一种实现。由于StructureMap具有相同的初始化引导程序代码,因此如何根据传入的请求是WebApi端点还是Mvc控制器端点进行切换?
最佳答案
不知道这是否是实现此目标的最佳方法,但是我使用ObjectFactory.Configure方法在启动时覆盖初始化注册表,但是在Mvc的DependencyResolver.SetResolver以及WebApi的GlobalConfiguration.Configuration.ServiceResolver的每个SetResolver内执行此操作。 SetResolver。
例如
ObjectFactory.Configure(x => x.For<IAuthenticationService>()
.Use(s => s.GetInstance<IMvcAuthenticationService>()));
和
ObjectFactory.Configure(x => x.For<IAuthenticationService>()
.Use(s => s.GetInstance<IWebApiAuthenticationService>()));
关于c# - 如何使用StructureMap将不同的依赖项注入(inject)WebApi Controller,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10512277/