使用Castle.Windsor 2.5.4.32和Castle.Core 2.5.2.0。
我有一个组件,它的ctor中需要一个string[]。string[]来自一个“设置”类。我不希望组件依赖于设置类,因为它只需要string[]。因此,我使用DynamicProperties从设置类中提取数据,该数据是从容器中提取的。至少,这是我认为会发生的。Windsor无法解析我的组件,因为它说有一个缺失的依赖项( string[])。
这里有一个快速(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)
{
}
}
}发布于 2012-02-17 18:15:26
您的用法非常好。
我刚刚在Windsor 3上运行了测试用例,它通过了。所以我想这可能是2.5.x中的一个bug
https://stackoverflow.com/questions/9315836
复制相似问题