gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:33:40 26 4
gpt4 key购买 nike

如果我对同一个接口(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# - CaSTLe Windsor 在 MVC 中对同一接口(interface)的多重实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com