如何从温莎城堡的其他注册组件传递属性

时间:2018-04-05 06:35:40

标签: c# dependency-injection castle-windsor

我必须获取已在我的DI Container中注册的组件的属性值,并将其用于将要注册的其他组件的构造函数中。

例如:

container.Register(Component.For<IFoo>().ImplementedBy<Foo>());

container.Register(Component.For<Da>().DependsOn(
    /*Here I want to somehow pass from Foo object property FooConnection*/
    );

我正在考虑创建一个可以获得IFoo对象的构造函数,但是这样我将引入循环依赖(IFoo / Foo和Da在其他程序集中)并且它不会工作。

编辑:

到目前为止,我能想到的唯一解决方案就是这个,在我看来这远非理想:

container.Register(Component.For<Da>().DependsOn(
    Dependency.OnValue<string>(container.Resolve<IFoo>().FooConnection)));

1 个答案:

答案 0 :(得分:1)

创建第三个类Configuration,其他人将依赖它并将它放到两个引用的程序集中。

container.Register(Component.For<Configuration>())

public class Configuration
{
    //your properties
}

public class Foo
{
    public Foo(Configuration configuration)
    {
    }
}

public class Da
{
    public Da(Configuration configuration)
    {
    }
}