如何使用StructureMap将不同的依赖项注入到WebApi Controller中

时间:2012-05-09 08:15:44

标签: c# asp.net-mvc dependency-injection structuremap asp.net-web-api

目前我有一个MVC应用程序,它还包含WebApi控制器。

我已经使用默认约定设置StructureMap来初始化,这些约定处理MVC和WebApi的服务依赖性。这一切都很完美。

但是,我有一个身份验证服务依赖项,应该为WebApi注入,并为MVC注入不同的实现。由于StructureMap具有相同的初始化引导代码,如何根据请求是WebApi端点还是Mvc控制器端点进行切换?

1 个答案:

答案 0 :(得分:1)

不知道这是否是实现此目的的最佳方法,但我使用ObjectFactory.Configure方法在启动时覆盖初始化注册表,但是在Mvc的DependencyResolver.SetResolver和WebApi的GlobalConfiguration.Configuration上的每个SetResolver中执行此操作。 .ServiceResolver.SetResolver。

e.g。

 ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
                        .Use(s => s.GetInstance<IMvcAuthenticationService>()));

 ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
                        .Use(s => s.GetInstance<IWebApiAuthenticationService>()));