2011-06-11 70 views
0

後仍然返回null我正在使用Unity(Prism4自帶)的版本2。我試圖編寫一個可以返回非註冊類型枚舉的擴展。下面的代碼是我寫的,但是在解析調用後我得到了空值。爲什麼Unity自定義BuilderStrategy即使在設置Existing property

 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? – 2011-06-11 21:25:34

+0

2.0。剛剛更新了問題 – 2011-06-11 21:39:27

回答

1

將戰略添加到Strategies集合中,而不是BuildPlanStrategies。

BuildPlanStrategies用於構造將構造解析對象的對象。這不是你正在做的 - 你只是直接返回對象。我很驚訝你得到了空,實際上 - 我會期待在那裏有一個無效的演員例外。

+0

當!沒有注意到這一點。 – 2011-06-12 04:58:22

相關問題