注入2个相同类型的参数

时间:2015-03-26 01:26:07

标签: .net autofac

我在构造函数中有一个具有2个相同类型参数的类。

我使用 autofac 注入依赖项,但无法找到注入相同类型的2个参数的方法。注入时我有什么方法可以指定吗?

class test
{
    test(Iconnection con1, Iconnection con2)
    { }
} 

我想通过 autofac 注入con1con2但不能这样做。

1 个答案:

答案 0 :(得分:2)

注册ResolvedParameter课程时,您可以使用Test构造:

builder.RegisterType<Test>()
       .As<ITest>()
       .WithParameter(
         new ResolvedParameter(
           (pi, ctx) => pi.ParameterType == typeof(IConnection) && pi.Name == "con1",
           (pi, ctx) => [code resolving con1 from ctx]))
       .WithParameter(
         new ResolvedParameter(
           (pi, ctx) => pi.ParameterType == typeof(IConnection) && pi.Name == "con2",
           (pi, ctx) => [code resolving con2 from ctx]));

或者,如果您正在处理相同类型的不同配置实例,我建议您更改构造函数签名以接受接受参数来区分连接的工厂类型(例如IConnectionFactory)。例如:

interface IConnectionFactory
{
    IConnection CreateConnection(string name);
}