У меня есть компоненты:
public interface IFoo
{ }
public interface IBar
{ }
public class Foo : IFoo
{
public IBar Bar { get; set; }
}
public class Bar : IBar
{
public IFoo Foo { get; set; }
}
У меня есть конфигурация Касл-Виндзор:
Container.AddComponent("IFoo", typeof (IFoo), typeof (Foo));
Container.AddComponent("IBar", typeof (IBar), typeof (Bar));
и провал модульного теста:
[Test]
public void FooBarTest()
{
var container = ObjFactory.Container;
var foo = container.Resolve<IFoo>();
var bar = container.Resolve<IBar>();
Assert.IsNotNull(((Foo) foo).Bar);
Assert.IsNotNull(((Bar) bar).Foo);
}
Сбой из-за циклической зависимости "foo" .Bar или "bar" .oo имеет значение null.
Как настроить Castle для правильной инициализации обоих компонентов?
Я могу правильно инициализировать оба компонента вручную:
[Test]
public void FooBarTManualest()
{
var fooObj = new Foo();
var barObj = new Bar();
fooObj.Bar = barObj;
barObj.Foo = fooObj;
var foo = (IFoo) fooObj;
var bar = (IBar) barObj;
Assert.IsNotNull(((Foo)foo).Bar);
Assert.IsNotNull(((Bar)bar).Foo);
}
.. и это работает, проходит.
Как сделать такую настройку с помощью Castle Windsor?