我有一个现有的MVC应用程序,我使用Castle Windsor作为IoC容器。它作为Web应用程序在Azure中运行。
我们最近使用基于ASP.Net Web API的新控制器扩展了功能。
在global.asax
中设置和配置容器但是 - 由于MVC框架和Web API框架的不同性质,特别是它们如何处理HttpContext
,我们在代码的核心部分有一些代码,需要根据哪个控制器工作方法被执行了。执行此操作的代码分为两个不同的类(实现相同的接口)。
我们现在的解决方案是使用两个实例配置容器,将两个实例注入到类中,并在运行时计算出(通过调查HttpContext
数据)执行代码。
但我认为这很糟糕。
我们有什么方法可以做得更好吗?我们是否可以指示Castle Windsor确定在运行时注入哪个实例 - 基于例如URI中的值?