使用DynamicParameters时缺少依赖项

时间:2012-02-16 17:16:42

标签: c# castle-windsor castle

使用Castle.Windsor 2.5.4.32和Castle.Core 2.5.2.0。

我的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)
               {
               }
       }
}

1 个答案:

答案 0 :(得分:0)

您的使用情况非常好。

我刚刚在Windsor 3上运行测试用例并且它已经过去了。所以我想这可能是2.5.x中的一个错误