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