Отсутствует зависимость при использовании DynamicParameters - PullRequest
0 голосов
/ 16 февраля 2012

Использование Castle.Windsor 2.5.4.32 и Castle.Core 2.5.2.0.

У меня есть компонент, которому требуется строка [] в ctor.Строка [] происходит из класса «settings».Я не хочу, чтобы компонент зависел от класса настроек, так как ему просто нужна строка [].Поэтому я использовал 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 голосов
/ 17 февраля 2012

Вы используете отлично.

Я только что выполнил тестовый пример на Виндзоре 3, и он проходитТак что я полагаю, что это может быть ошибкой в ​​2.5.x

...