IUnityContainer.Resolve <T>抛出声明它不能用于types参数的错误
昨天我已经实现了代码:
CustomerProductManager productsManager = container.Resolve<CustomerProductManager>();
这是可编译和工作。
今天(可能我已经修改了一些东西)我不断得到错误:
非generics方法'Microsoft.Practices.Unity.IUnityContainer.Resolve(System.Type,string,params Microsoft.Practices.Unity.ResolverOverride [])'不能与types参数一起使用
我的同事有相同的源代码,并没有相同的错误。 为什么? 如何解决这个问题?
PS
行“使用Microsoft.Practices.Unity;” 存在于使用部分中。
我试图用非通用版本replace通用版本:
CustomerProductManager productsManager = (CustomerProductManager)container.Resolve(typeof(CustomerProductManager));
并得到另一个错误:
方法'Resolve'没有重载需要'1'参数
看起来像其中一个组件没有引用..但是哪一个? 我有其中2引用:1. Microsoft.Practices.Unity.dll 2. Microsoft.Practices.ServiceLocation.dll
PPS我看到类似的问题http://unity.codeplex.com/WorkItem/View.aspx?WorkItemId=8205,但它被parsing为“不是一个错误”
任何想法都会有所帮助
我有同样的问题,并发现在“棱镜”示例代码文件的“修复”。 看起来,即使它不是在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,但在Microsoft.Practices.Unity中使用Container.Resolve IS的通用版本。
我面临这个问题,没有任何这个答案没有帮助我。 我得到编译时错误
Microsoft.Practices.Unity.IUnityContainer的未知方法RegisterType()
为我的下面的代码。
Container.RegisterType<MyInterface, MyClass>();
我发现如果你没有实现类MyClass
,你会遇到这个问题。 希望它也能为你解决
在我的情况下,我使用从抽象基类inheritance的Unity来包装类,而且这个基类没有无参数的构造函数。 一旦我改变我的代码使用基类的无参数构造函数,问题就消失了。
在我的情况下,我让Bootstrapper在没有通用版本的情况下实现自己的Resolve,所以找不到Microsoft的Unity Resolve。 添加正确的使用做了诀窍。