Использование 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)
{
}
}
}