当我的具体类有两个构造函数时,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