0
使用Castle.Windsor 2.5.4.32和Castle.Core 2.5.2.0。使用DynamicParameters时缺少依赖关系
我有一个组件需要一个字符串[]在它的ctor。字符串[] 来自“设置”类。我不想在设置类上依赖组件 ,因为它只需要字符串[]。所以我用 DynamicProperties从设置类中提取数据,这是从容器中提取的。至少, 这就是我认为会发生的事情。温莎不能解决我的 组件,因为它说有一个缺失的依赖项(字符串[])。
这是一个快速(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中也不是bug。上面的测试通过(哎呀!)。我在“解决”行上设置了一个断点,并在调试器中注意到有一个可能配置错误的组件。但是,DOES *的解析工作,它使用DynamicParameters来提供缺失的依赖关系。我还有别的事情,我无法弄清楚。我可能会把它发布到Castle-Users Google小组,并且由于我无法创建回购测试用例而查找我做错的意见/想法。 – PatrickSteele 2012-02-17 12:29:54
好的,听起来不错。 – 2012-02-17 12:43:42