我刚刚开始使用Castle Windsor的Fluent注册,并且无法确定如何在注册时引用我在XML配置文件的属性部分中定义的属性。所以我有这个代码来注册一个组件。
RegisterComponent(componentId, Component.For<ConnectionConfig>()
.ImplementedBy(typeof(ConnectionConfig))
.Named(componentId)
.LifeStyle.Singleton
.Parameters(
Parameter.ForKey("ConnectionId").Eq(connectionId),
Parameter.ForKey("CommandTimeoutSeconds").Eq("#{ConnectionInfo.DefaultTimeout}")));
#{ConnectionInfo.DefaultTimeout}是我在XML配置中定义的属性,它在Fluent注册之前加载到容器中,但是这不起作用,在此代码中传递给Eq()的参数被处理作为文字(虽然这适用于其他组件,即$ {My.Component}将起作用)
在通过新的Fluent API注册组件时,如何从配置文件中引用属性的任何想法?
谢谢
答案 0 :(得分:1)
更新版本的Windsor(3.x)内置支持:
Component.For<Foo>().DependsOn(Dependency.OnAppConfigValue("someValue"))