2011-06-11 2 views
0

Unity의 버전 2 (Prism4와 함께 제공됨)를 사용하고 있습니다. 등록되지 않은 유형의 열거 형을 반환 할 수있는 확장을 작성하려고합니다. 다음 코드는 필자가 작성한 것이지만 해결 호출 후 null이 발생합니다.유니티 사용자 정의 BuilderStrategy가 기존 속성을 설정 한 후에도 null을 반환하는 이유

 class EnumerableStrategy : BuilderStrategy 
     { 
      public override void PreBuildUp(IBuilderContext context) 
      { 
       context.Existing = new []{"Test"}; 
       context.BuildComplete = true; 
      } 
     } 

     class EnumerableExtension : UnityContainerExtension 
     { 
      protected override void Initialize() 
      { 
       Context.BuildPlanStrategies.AddNew<EnumerableStrategy>(Microsoft.Practices.Unity.ObjectBuilder.UnityBuildStage.PreCreation); 
      } 
     } 
     static void Main(string[] args) 
     { 

      var container = new UnityContainer(); 
      container.AddNewExtension<EnumerableExtension>(); 
      var items = container.Resolve<IEnumerable<string>>(); 
      foreach (var item in items) 
       Console.WriteLine(item.ToString()); 
     } 

항목 변수가 null로 판명되었습니다. 왜?

+0

Unity의 어떤 버전이 Prism4와 함께 제공됩니까? –

+0

2.0. 방금 질문을 업데이트했습니다. –

답변

1

전략을 BuildPlanStrategies가 아닌 Strategies 컬렉션에 추가하십시오.

BuildPlanStrategies는 확인 된 개체를 구성 할 개체를 구성하기위한 것입니다. 그것은 당신이하는 일이 아닙니다. 당신은 단지 객체를 직접 반환하는 것입니다. 네가 널 (null)이라는 사실에 놀랐다. 어딘가에서 잘못된 캐스트 예외를 예상했을 것이다.

+0

Dang! 그걸 알아 채지 못 했어. –

관련 문제