其他分享
首页 > 其他分享> > 当我的具体类有两个构造函数时,Microsoft.Unity没有Unity.Resolve吗?

当我的具体类有两个构造函数时,Microsoft.Unity没有Unity.Resolve吗?

作者:互联网

我有一个具体的记录器类,Microsoft.Unity会将ILogger解析为它.

logger类具有两个构造函数:

1. public logger()
2. public logger(List<BaseLogger> Loggers)

我的web.config文件中包含unity部分,如下所示:

<unity>
<containers>
  <container>
    <types>

      <type type="MyCompany.Logger.ILogger, MyCompany.Logger"
           mapTo="MyCompany.Logger.logger, MyCompany.Logger">

      </type>
    </types>
   </container>
  </containers>
</unity>

如果删除列为2的构造函数,则logger会成功解析logger类.当我重新添加它时,出现此错误…

Resolution of the dependency failed, type = “MyCompany.Logger.ILogger”, name = “(none)”.
Exception occurred while: while resolving.
Exception is: InvalidOperationException – The type List`1 has multiple constructors of length 1. Unable to disambiguate.

谁能解释我如何更改web.config条目以处理“ 2”.在记录器中列出重载的构造函数以在尝试Unity.Resolve时工作?

解决方法:

默认情况下,Unity尝试使用具有最大参数数量的构造函数创建实例.

为了指定使用哪个,您需要使用构造函数注入.您可以标记与InjectionConstructor属性一起使用的构造函数,也可以在配置中指定构造函数. This应该有帮助.

我了解MSDN上的文档还不够好.如果有帮助,请参见this.我找不到今天在办公室阅读的文章的链接.那有很好的描述.如果您能找到一个或更好的一个,那就祝您好运.

标签:c-4-0,unity-container,c
来源: https://codeday.me/bug/20191209/2096998.html