2014-05-01 6 views
0

의존성 주입을 사용하기 위해 Unity 라이브러리를 사용하고 있습니다. I는 제어부 (제품)가 아래 생성자 코드 아래여러 종속성을 컨트롤러에 주입하는 방법은 무엇입니까?

public ProductController(IService1 ser1,IService2 ser2,IService3 ser3,IService4 ser4) 
{ 
    this._Service1 = ser1; 
    this._Service2 = ser2; 
    this._Service3 = ser3; 
    this._Service4 = ser4; 
} 

그리고이 controller.Which의 단위 테스트 코드가 컨트롤러의 생성자 4 서비스 클래스 오브젝트 위에 주입 임.

ProductController _productController; 
    Mock<IService1> _ser1Mock; 
    Mock<IService2> _ser2Mock; 
    Mock<IService3> _ser3Mock; 
    Mock<IService4> _ser4Mock; 

    if(_productController!=null) 
    { 
    _productController = new ProductController(
     _ser1Mock.Object,_ser2Mock.Object,_ser3Mock.Object,_ser4Mock.Object) 
    } 

여기 컨트롤러의 생성자에 여러 종속성 (서비스) 객체가 주입됩니다. 그리고 단위 테스트 방법은 잘 작동합니다.하지만이 때 응용 프로그램을 실행하면 작동하지 않습니다.

'오류 500'이 표시됩니다.

여러 종속성이 있고 컨트롤러에 종속성을 주입하려면 무엇을해야하는지 알고 싶습니다. 별도로 주입해야하거나 (위에서했던 것처럼) 한 번 주입 할 수 있어야합니다.

다음은 부트 스트 래퍼 파일 코드 이며 System.Web.Mvc를 사용합니다. Microsoft.Practices.Unity 사용; Unity.Mvc4를 사용하여 ; 유니티는 최고 수준에서 일을 주입하기 위해 명시 적으로 다시 사용해서는 안 container을 완료 한 후에는, 위해 필요한를 해결

public static class Bootstrapper 
{ 
    public static IUnityContainer Initialise() 
    { 
     var container = BuildUnityContainer(); 

     DependencyResolver.SetResolver(
      new UnityDependencyResolver(container)); 

     return container; 
    } 

    private static IUnityContainer BuildUnityContainer() 
    { 
     var container = new UnityContainer(); 
     RegisterTypes(container); 
     return container; 
    } 

    public static void RegisterTypes(IUnityContainer container) 
    { 
     container.RegisterType<IService1Dal,Service1Dal>(); 
     container.RegisterType<IService1,Service1>(); 
     container.RegisterType<IService2Dal,Service2Dal>(); 
     container.RegisterType<IService2,Service2>(); 
     container.RegisterType<IService3Dal,Service3Dal>(); 
     container.RegisterType<IService3,Service3>(); 
     container.RegisterType<IService4Dal,Service4Dal>(); 
     container.RegisterType<IService4,Service4>();  
    } 
} 
+1

가 지금까지의 내가, 당신은 아무것도 주입하지 않는 말할 수있는, 당신은 단지입니다 너무 유니티와 ProductController을 ... 등록한다 생성자 호출 – thumbmunkeys

+0

유니티 구성 (XML 또는 Fluent)을 보여주십시오. 그것은 아마 문제가있는 곳일 것입니다. 또한, 어떻게/당신은 주입/해결하고 있습니까? 'new ProductController'를 호출하지 않기를 바랍니다. – Belogix

+0

@ Belogix, 구성 코드를 업데이트했습니다. – Pawan

답변

0

당신은 당신을 확인해야합니다. 이 같은 만드는 체크 :

_productController = container.Resolve<IProductController>(); 

을 또한,

이 가
container.RegisterType<IProductController, ProductController>(); 
관련 문제