【问题标题】:Is it possible to inject a list of resolved objects into a constructor using Autofac?是否可以使用 Autofac 将已解析对象的列表注入构造函数?
【发布时间】:2013-02-27 02:12:04
【问题描述】:

我是 Autofac (3) 的新手,我正在使用它在几个实现 IRecognizer 的程序集中查找许多类。

所以我有:

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()).As<IRecognizer>();

这很好。

但我想将对找到的组件的引用注入到构造函数中 - 有点:

public Detector(List<IRecognizer> recognizers)
{
    this.Recognizers = recognizers;
}

有没有办法做到这一点?

【问题讨论】:

    标签: c#-4.0 collections autofac code-injection


    【解决方案1】:

    Autofac 支持 IEnumerable&lt;T&gt; 作为 relationship type:

    例如,当 Autofac 注入类型为的构造函数参数时 IEnumerable&lt;ITask&gt; 它不会寻找提供的组件 IEnumerable&lt;ITask&gt;。相反,容器会找到所有 ITask 的实现并将它们全部注入。

    所以将你的构造函数更改为:

    public Detector(IEnumerable<IRecognizer> recognizers)
    {
        this.Recognizers = new List<IRecognizer>(recognizers);
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-23
    • 2023-03-10
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多