IUnityContainer.Resolve<T> throws error claiming it cannot be used with type parameters

别等时光非礼了梦想. 提交于 2019-11-29 19:30:44

I had the same problem and found the "fix" looking at Prism sample code files. Looks like, even if it is not a dll in Unity V2 you have to add a reference in your class to: Microsoft.Practices.Unity

my complete "using" section is as follow

using System;
using System.Windows;
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Composite.UnityExtensions;

I'm not sure if you are using Silverlight, but the generic version for Container.Resolve IS in Microsoft.Practices.Unity.

Microsoft no longer owns Unity and it's in version 5, the namespace is now:

using Unity;

Ensure that is in your using section when using:

container.Resolve<T>();
Ranjith

I faced this problem and none of this answers did not help me. I was getting the compile time error

Unknown method RegisterType() of Microsoft.Practices.Unity.IUnityContainer

for my below code.

Container.RegisterType<MyInterface, MyClass>();

I found that if you did not implement IMyInterface to the class MyClass, you get this issue. Hope it resolves for you too...

Peter Howe

In my situation the class I was wrapping with Unity inherited from an abstract base class, and that base class did NOT have a parameterless constructor. Once I changed my code to use a parameterless constructor for the base class, the problem disappeared.

In my situation, I had Bootstrapper implement its own Resolve without the generic version, so it couldn't find the Microsoft's Unity Resolve. Adding the proper usings did the trick.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!