C# IUnityContainer.Resolve<;T>;抛出错误,声明它不能与类型参数一起使用
昨天我实现了以下代码:C# IUnityContainer.Resolve<;T>;抛出错误,声明它不能与类型参数一起使用,c#,.net,generics,unity-container,compilation,C#,.net,Generics,Unity Container,Compilation,昨天我实现了以下代码: CustomerProductManager productsManager = container.Resolve<CustomerProductManager>(); 还有一个错误: 方法“Resolve”不需要重载 “1”参数 似乎其中一个程序集未被引用。。但是哪一个呢?我引用了其中的两个: 1.Microsoft.Practices.Unity.dll 2.Microsoft.Practices.ServiceLocation.dll p.p.S.我
CustomerProductManager productsManager = container.Resolve<CustomerProductManager>();
还有一个错误:
方法“Resolve”不需要重载
“1”参数
似乎其中一个程序集未被引用。。但是哪一个呢?我引用了其中的两个:
1.Microsoft.Practices.Unity.dll
2.Microsoft.Practices.ServiceLocation.dll
p.p.S.我也看到过类似的问题,但它被解决为“不是一个bug”
任何想法都会有帮助我也有同样的问题,在查看Prism示例代码文件时发现了“修复”。看起来,即使它不是Unity V2中的dll,也必须在类中添加一个引用: Microsoft.Practices.Unity 我完整的“使用”部分如下
using System;
using System.Windows;
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Composite.UnityExtensions;
我不确定您是否正在使用Silverlight,但Container.Resolve的通用版本是Microsoft.Practices.Unity中的。在我的情况下,我用Unity包装的类继承自抽象基类,而该基类没有具有无参数构造函数。一旦我将代码更改为对基类使用无参数构造函数,问题就消失了。我遇到了这个问题,这些答案对我都没有帮助。我得到了编译时错误 的未知方法RegisterType() Microsoft.Practices.Unity.IUnityContainer 下面是我的代码
Container.RegisterType()代码>
我发现,如果没有对类MyClass
实现IMyInterface
,就会出现这个问题。
希望它也能为您解决…在我的情况下,我让Bootstrapper在没有通用版本的情况下实现自己的解决方案,因此它找不到Microsoft的Unity解决方案。添加正确的用法就成功了。Microsoft不再拥有Unity,它在版本5中,名称空间现在是:
using Unity;
使用时,请确保在“使用”部分:
container.Resolve<T>();
container.Resolve();
您使用的是Unity 2.0吗?您可能会发现,正是Power Commands插件使用子句删除了未使用的命名空间;当您的代码处于不可编译状态时,名称空间是“未使用的”,并且您可能有在编辑过程中保存文件的习惯,而该加载项在保存时删除了额外的用途。不久前,我发现添加“使用Microsoft.Practices.Unity;”解决了一个问题。这也解决了我的问题,但该死的resharper现在抱怨没有使用的“使用指令”。原因是带有类型参数的Resolve是Microsoft.Practices.Unity中的一个扩展方法,而没有类型参数的Resolve()只是接口(或类)上的一个方法。Thx!所有这些年后,这一切都发生在全新的代码上。HttpClient与这些“隐藏的”扩展机密是相同的。不喜欢。我喜欢Simple Injector.和FWIW,在新的并且被认为是高度兼容的Unity 5中,名称空间现在是Unity
,而不是Microsoft.Practices.Unity
。请注意,如果您使用的是Prism,Prism的当前稳定版本(6.3.0)仍然使用Unity 4.0.1,您仍然必须使用Microsoft.Practicess.Unity说真的,这件事快把我逼疯了。谢谢
container.Resolve<T>();