我必须获取已在我的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)));
答案 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)
{
}
}