我在构造函数中有一个具有2个相同类型参数的类。
我使用 autofac 注入依赖项,但无法找到注入相同类型的2个参数的方法。注入时我有什么方法可以指定吗?
class test
{
test(Iconnection con1, Iconnection con2)
{ }
}
我想通过 autofac 注入con1
和con2
但不能这样做。
答案 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);
}