目前,我有一个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/

10-10 18:38
查看更多