c# - MVC 中同一接口(interface)的 CaSTLe Windsor 多重实现

标签 c# asp.net-mvc castle-windsor castle

如果我有同一接口(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/

相关文章:

c# - 带有 CaSTLe windsor 的 WCF Web 服务客户端

c# - Monitor.Wait,条件变量

c# - ScrollBar 值设置不正确

c# - 通过套接字动态调用方法

javascript - C# - Asp.Net MVC 中的时区问题

javascript - 使用 JavaScript 在 Asp.net mvc 中突出显示 html 文档表达式

javascript - 隐藏 javascript 填充表中的列

caSTLe-windsor - 注入(inject) AutoMapper

caSTLe-windsor - 温莎城堡 : Using convention registration along with specific implementations

c# - 使用 HTML Agility Pack 获取内部文本