首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个相同类型参数的注入构造函数

具有多个相同类型参数的注入构造函数
EN

Stack Overflow用户
提问于 2016-02-21 02:42:25
回答 1查看 5.1K关注 0票数 5

我使用autofac作为DI容器。我的目标是将参数store注入构造函数。这就是我的构造函数的样子。

代码语言:javascript
复制
public SomeClass (IMyCouchStore store)
{
    this.store = store;
} 

为了实例化,store参数需要两个字符串参数

代码语言:javascript
复制
// sample instantiation
var store = new MyCouchStore("http://someUri","someDbName");

我试图在引导过程中注册这两个参数:

代码语言:javascript
复制
builder
    .RegisterType<MyCouchStore>()
    .As<IMyCouchStore>()
    .WithParameters(new [] {
        new NamedParameter("dbUri","http://someUri"),
        new NamedParameter("dbName","someDbName")
    }

但是,我收到以下错误:

Autofac.Core.DependencyResolutionException

无法在“MyCouch.MyCouchStore”类型上长度相同的多个构造函数之间进行选择。在注册组件时,使用UsingConstructor()配置方法显式地选择构造函数。

如何注入多个相同类型的参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 02:46:55

你的答案在你的问题中:)

使用UsingConstructor()配置方法显式地选择构造函数。

代码语言:javascript
复制
public MyCouchStore(string httpSomeuri, string somedbname)
{
    this.SomeUri = httpSomeuri;
    this.SomeDbName = somedbname;
}
代码语言:javascript
复制
builder.RegisterType<MyCouchStore>()
    .As<IMyCouchStore>()
    .UsingConstructor(typeof (string), typeof (string))
    .WithParameters(new[] 
    {
        new NamedParameter("httpSomeuri", "http://someUri"),
        new NamedParameter("somedbname",  Guid.NewGuid().ToString())
    });
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35531684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档