我有一个具体的记录器类,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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。