2012-02-16 2 views
0

Castle.Windsor 2.5.4.32 및 Castle.Core 2.5.2.0 사용.DynamicParameters를 사용할 때 누락 된 종속성

나는 ctor에 문자열 []이 필요한 구성 요소가 있습니다. 문자열 [] 은 "설정"클래스에서 가져옵니다. 나는 단지 [] 문자열이 필요하기 때문에 설정 클래스에 종속적 인 구성 요소 인 을 원하지 않습니다. 그래서 DynamicProperties를 사용하여 컨테이너에서 가져온 설정 클래스에서 데이터를 가져 왔습니다. 적어도, 그것이 내가 생각할 것입니다. Windsor가 내 구성 요소를 해결할 수 없습니다. 종속성이 누락되었습니다 (문자열 []).

다음은 빠른 (MSTest) 테스트 사례입니다. DynamicParameters를 처음 사용 했으므로 잘못된 결과가 발생할 수 있습니다. 어떤 아이디어?

namespace WindsorTests.DynamicParametersTest 
{ 
     using Castle.MicroKernel.Registration; 
     using Castle.Windsor; 
     using Microsoft.VisualStudio.TestTools.UnitTesting; 

     [TestClass] 
     public class DPTest 
     { 
       [TestMethod] 
       public void TestMethod1() 
       { 
         var container = new WindsorContainer(); 
         container.Register(
           Component.For<ISettings>().ImplementedBy<Settings>(), 
           Component.For<Foo>().DynamicParameters((k, p) => 
                     { 
                var settings = k.Resolve<ISettings>(); 
                p["data"] = settings.MoreData; 
                     }) 
           ); 

         var bar = container.Resolve<Foo>(); 
       } 
     } 

     public interface ISettings 
     { 
       string[] MoreData { get; } 
     } 

     public class Settings : ISettings 
     { 
       public string[] MoreData 
       { 
         get { return new[] {"A", "B", "C"}; } 
       } 
     } 

     public class Foo 
     { 
       public Foo(string[] data) 
       { 
       } 
     } 
} 

답변

0

사용법은 완벽합니다.

방금 ​​윈저 3에서 테스트 케이스를 실행했고 통과했습니다. 그래서 그것은 2.5.x의 버그 일 수 있다고 생각합니다.

+0

실제로, 2.5.x의 버그도 아닙니다. 위의 테스트가 통과됩니다 (아!). "Resolve"줄에 중단 점을 설정하고 잠재적으로 잘못 구성된 구성 요소가 하나 있다는 것을 디버거에서 알았습니다. 그러나 해결 방법은 * 작동하지 않으며 DynamicParameters를 사용하여 누락 된 종속성을 제공합니다. 알아낼 수없는 뭔가가 있습니다. Castle-Users Google 그룹에 게시하고 Repo 테스트 사례를 만들 수 없기 때문에 내가 뭘 잘못하고 있는지에 대한 의견/아이디어를 찾아 보겠습니다. – PatrickSteele

+0

괜찮습니다. –

관련 문제