簡體   English   中英

MVC中相同接口的Castle Windsor多個實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM