如果我有同一接口(interface)的多个实现,例如:IRule
,我如何在我的 Controller 中解析它?
private readonly IRule[] _rules;
public HomeController(IRule[] rules)
{
_rules = rules;
}
public RunRules()
{
foreach (IRule rule in rules)
rule.RunRule();
}
最佳答案
我遇到了一个问题,我想设置 Controller 来提取规则集合,但不想单独列出每个规则,因此我有一个 IRule[]
数组> 我设置的。
Controller :
private readonly IRule[] _rules;
public HomeController(IRule[] rules)
{
_rules = rules;
}
安装程序:
设置温莎城堡安装程序。
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<IRule>().ImplementedBy<ValidateNPIRule>());
container.Register(Component.For<IRule>().ImplementedBy<ValidateZipRule>());
}
重要的部分是 .AddSubResolver
行
添加 CollectionResolver
是安装程序一次性解析所有规则所需的内容,并且我可以将它们拉入数组中。
全局.asax:
protected void Application_Start()
{
WindsorContainer container = new WindsorContainer();
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, true));
container.Install(FromAssembly.This());
}
关于c# - MVC 中同一接口(interface)的 CaSTLe Windsor 多重实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984812/