使用Castle Windsor初始化具有相同类型的多个参数的MVC控制器的最佳方法是什么?

时间:2009-11-25 09:32:17

标签: asp.net-mvc castle-windsor

在我的MVC应用程序中,我在Application_Start处理程序中使用反射注册所有控制器。这基本上创建了在任何控制器参数上使用的所有类型,并将其添加到容器中。

我现在的情况是我的控制器上有多个相同类型的参数。这是我的问题的一个简单示例:

public class ClassA : ICustomType
{ ... }

public class ClassB : ICustomType
{ ... }

public class CustomController : Controller
{
   public CustomController(ICustomType a, ICustomType b)
   { ... }
}

我知道我可以使用<components>组在我的web.config文件中定义CustomController。但是,我很想知道是否有一种方法可以将'ClassA'指定为我的第一个参数,将'ClassB'指定为我的web.config文件之外的第二个参数?

1 个答案:

答案 0 :(得分:4)

container.Register(
   Component.For<ICustomType>().Named("a").ImplementedBy<ClassA>(),
   Component.For<ICustomType>().Named("b").ImplementedBy<Classb>()
);