2017-12-08 4 views
1

그래서 내 응용 프로그램은 Unity Container v2를 사용하여 종속성 주입을 수행했습니다. 이제 NUGET 패키지를 사용하여 5 이상으로 마이 그 레이션하고 있지만 클래스 해상도와 관련된 문제가 있습니다.Unity Container 2.0에서 Unity Container 5로 마이그레이션

var searchClient = IocContainer.Resolve<DocumentSearch>(); 

내가 패키지가 변경 전용으로 UnityMicrosoft.Pratices.Unity에서 수입을 변경 한 나에게

The non-generic method 'IUnityContainer.Resolve(Type, string, params ResolverOverride[])' cannot be used with type arguments App.Super.Web.App D:\Repo\git1601\App.Super.Web.App\API\ApiControllers\DocumentsController.cs

을 제공하지만, 여전히 작동하지 않습니다. 어떤 아이디어?

+0

당신은 이것을 알아 냈습니까? 나는 최근에 5 형식 4로 마이그레이션했고 같은 문제가 있습니다. – DDiVita

답변

1

이 NuGet에서 다운로드 마지막 유니티와 함께 ​​작동합니다 (5.3.2)

using Unity; 

namespace ConsoleApplication1 
{ 
    public class Foo 
    { 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      IUnityContainer container = new UnityContainer(); 
      var f = container.Resolve<Foo>(); 
     } 
    } 
} 

Resolve<T> 있음은 확장 방법과는 매우 동일한 네임 스페이스 (Unity)에 정의되어있는 동안, 당신의 컴파일러는 지원해야 확장 방법.

확장 메서드를 사용할 수없는 아주 오래된 C# 2 컴파일러로 컴파일하지 않습니까?

다른 가능한 이유는 참조 목록에 Unity.Abstractions이없는 것입니다. UnityContainer 유형이 Unity.Container 어셈블리에 정의되어 있지만 확장 메서드는 다른 어셈블리에 정의되어 있습니다 (NuGet을 설치하면 설치되지만 모두).

확장 방법이라고 부르는 프로젝트에서 두 어셈블리가 모두 참조되는지 확인하십시오.

+0

그게 전부 였어. Thanks Wik =) –

+0

실제로 그것은 저를 오도하는 것입니다. 아직도이 문제가 있습니다 : (Im은 오래된 컴파일러 btw를 사용하지 않고, 참조에'Unity.Abstractions'을 가지고 있습니다 (전체 라이브러리 nuget 패키지를 사용하고 있습니다) –