2016-08-21 2 views
4

나는 나의 WebApi 프로젝트에서 다음과 같은 해결이 : 콘솔 응용 프로그램에서 UnityResolver를 사용하는 방법?

config.DependencyResolver = new UnityResolver(container); // HttpConfiguration config 

그러나 콘솔 응용 프로그램에서, 나는 HttpContiguration이 없습니다. 내 콘솔 앱에서이 DependencyResolver를 사용하도록 유니티 컨테이너에 어떻게 알릴 수 있습니까?

답변

5

더 좋은 방법이 있지만 내 등록을 수행 한 다음 컨테이너가 내 "처음" 클래스를 해결하도록하십시오.

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Registering dependencies ..."); 
     var container = new UnityContainer(); 
     container.RegisterType<ProgramStarter, ProgramStarter>(); // Register a class that continues your program. 

     // Do your registrations. 
     RegisterTypes(container); 

     // Let Unity resolve ProgramStarter and create a build plan. 
     var program = container.Resolve<ProgramStarter>(); 

     Console.WriteLine("All done. Starting program..."); 
     program.Run(); 
    } 
} 

그리고 내 ProgramStarter 클래스입니다.

public class ProgramStarter 
{ 
    private readonly IService _service; 

    public ProgramStarter(IService service) 
    { 
     // Unity has created this instance and resolved all dependencies. 
     _service= service; 
    } 

    public void Run() 
    { 
     // Do what you want to do. 
    } 
} 
3

그렇지 않습니다. UnityResolver은 MVC 프레임 워크와 상호 작용하기 위해 존재합니다. 콘솔 응용 프로그램은 프레임 워크가 아니며 콘솔 응용 프로그램이 작성하려고하는 프레임 워크 유형이 없습니다. 프레임 워크가 없으므로 콘솔 응용 프로그램에서 DI 컨테이너를 사용하기 위해 특별한 후크가 필요하지 않습니다. 컨테이너를 만들고 객체 그래프를 구성하고 해결 된 객체에서 메소드를 호출하기 위해 하나의 container.Resolve 콜을 간단히 호출하면됩니다.

관련 문제