2011-03-16 9 views
4

Unity1.0을 내 ASP.NET 응용 프로그램에 통합하고 (UnityPageHandlerFactory 접근 방식 사용) 종속성 중 하나를 PageBase 클래스로 이동할 때까지 모든 작업을 훌륭하게 수행하려고했습니다. 모든 페이지에서 공유합니다. 이 속성은 BuildUp이 호출 될 때 설정되지 않습니다.기본 클래스에 정의 된 종속성을 주입하지 않음

BuildUp (type, object) 메서드를 사용하여 요청 될 때 각 페이지에 종속성을 주입하는 UnityPageHandlerFactory 클래스를 사용하고 있습니다. here. 선언 된 유형에 정의 된 속성이있는 한 속성이 삽입됩니다. 그러나 기본 클래스에 정의 된 속성은 설정되지 않습니다.

내가해야 할 다른 것이 있습니까? 이것이 나에게 자동적으로 보이는 것 같습니다.

답변

4

내가 BuildUp 메서드의 다른 오버로드를 사용하고 인용 예제의 것과 함께가는 것은 내 문제를 해결했다.

BuildUp (개체)를 사용하고 있는데 작동하지 않았습니다. BuildUp (Type, object)으로 전환하면 모든 것이 매력처럼 작동합니다!

왜 그런지는 모르겠지만 형식이 명시 적으로 제공 될 때 일어나는 것과는 달리 첫 번째 오버로드에서 형식이 해석되는 방식과 관련이 있다고 가정 할 수 있습니다.

어느 쪽이든,이 작은 변화를 내 모든 문제를 수정했습니다.

+1

방금 ​​제 베이컨을 저장했습니다. (OK, 실제로 베이컨이 아니지만 질문과 답변을 게시 해 주셔서 감사합니다.) –

+0

이 호출이 유추를 사용하기 때문에'BuildUp (object)'메소드가 작동하지 않습니다. 실제로'BuildUp (객체)'를 호출하면 객체 유형을 사용하여 인스턴스를 해결할 수 있습니다. 'BuildUp (object)'도 잘 작동해야합니다! –

1

코드의 관련 부분을 표시 할 수 있습니까? 종속성 속성이 기본 클래스에 있지만,

class InjectedClass 
    { 

    } 

    class MyBase 
    { 
      [Dependency] 
      public InjectedClass Dependency { get; set; } 
    } 

    class MyClass : MyBase 
    { 

    } 

    class Program 
    { 
      static void Main(string[] args) 
      { 
        UnityContainer uc = new UnityContainer(); 
        uc.RegisterType<InjectedClass>(); 

        MyClass m = new MyClass(); 
        uc.BuildUp(m); 

      } 
    } 

가 나는 또한 InjectedClass 내 페이지에 주입되는 것을 볼 수 있습니다 유사 asp.net 응용 프로그램에서 UnityPageHandlerFactory 이것을 테스트 : 이것은 내가 무엇을하고이 작동하는 것 같다 .

관련 문제