在我的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文件之外的第二个参数?
答案 0 :(得分:4)
container.Register(
Component.For<ICustomType>().Named("a").ImplementedBy<ClassA>(),
Component.For<ICustomType>().Named("b").ImplementedBy<Classb>()
);