gpt4 book ai didi

c# - 将组件列表解析为构造函数参数

转载 作者:行者123 更新时间:2023-11-30 22:37:06 26 4
gpt4 key购买 nike

假设我有一个接口(interface)来定义格式化报告:

public interface IFormatter 
{
string Name {get;}
Report Format(InputData data);
}

以及将为我格式化报告的提供程序的实现:

public FormatterProvider : IFormatterProvider
{
private readonly IList<IFormatter> _formatter;

public FormatterProvider(IList<IFormatter> formatters)
{
_formatters = formatters;
}

public IFormatter GetFormatter(string name){ return _formatters.Where(x => x.Name == name); }
}

我知道我可以使用此注册在程序集中注册所有格式化程序:

container.Register(
AllTypes.FromAssemblyName("MyCompany.Formatters")
.BasedOn<IFormatter>()
.WithService
.FromInterface()
);

但是,我该如何注册提供者,以便将容器中注册的任何格式化程序传递给它的构造函数?

最佳答案

使用名为 CollectionResolver 的子解析器。

Container.Kernel.Resolver.AddSubResolver(new CollectionResolver(Container.Kernel, true));

我认为您需要将 IList 更改为 IEnumerable 才能使这项工作正常进行,但不确定是否如此。

关于c# - 将组件列表解析为构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656361/

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