[英]Castle Windsor Multiple Implementation For Same Inteface in MVC
如果我有同一個接口的多個實現,例如: IRule
,如何在控制器中解析它?
private readonly IRule[] _rules;
public HomeController(IRule[] rules)
{
_rules = rules;
}
public RunRules()
{
foreach (IRule rule in rules)
rule.RunRule();
}
我遇到了一個問題,我想設置控制器以收集規則集合,但不想IRule[]
列出每個規則,因此我設置了一個IRule[]
數組。
控制器:
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
中添加內容是安裝程序立即解析所有規則所需要的,可以將它們拉入數組。
Global.asax中:
protected void Application_Start()
{
WindsorContainer container = new WindsorContainer();
container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, true));
container.Install(FromAssembly.This());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.