我使用autofac作为DI容器。
我的目标是将参数store
注入构造函数中。
这就是我的构造函数的样子。
public SomeClass (IMyCouchStore store)
{
this.store = store;
}
store
参数需要两个字符串参数才能实例化:
// sample instantiation
var store = new MyCouchStore("http://someUri","someDbName");
我尝试在引导过程中注册这两个参数:
builder
.RegisterType<MyCouchStore>()
.As<IMyCouchStore>()
.WithParameters(new [] {
new NamedParameter("dbUri","http://someUri"),
new NamedParameter("dbName","someDbName")
}
但是,我收到以下错误:
Autofac.Core.DependencyResolutionException
无法在类型&#39; MyCouch.MyCouchStore&#39;中选择长度相等的多个构造函数。在注册组件时,使用UsingConstructor()配置方法显式选择构造函数。
如何注入多个相同类型的参数?
答案 0 :(得分:4)
你的答案在你的问题中:)
使用
UsingConstructor()
配置方法显式选择构造函数。
public MyCouchStore(string httpSomeuri, string somedbname)
{
this.SomeUri = httpSomeuri;
this.SomeDbName = somedbname;
}
builder.RegisterType<MyCouchStore>()
.As<IMyCouchStore>()
.UsingConstructor(typeof (string), typeof (string))
.WithParameters(new[]
{
new NamedParameter("httpSomeuri", "http://someUri"),
new NamedParameter("somedbname", Guid.NewGuid().ToString())
});