Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IUnityContainer.Resolve<;T>;抛出错误,声明它不能与类型参数一起使用_C#_.net_Generics_Unity Container_Compilation - Fatal编程技术网

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.Unitycontainer.Resolve<T>();