Castle Windsor Fluent API:如何将组件参数值设置为已配置的属性

时间:2009-06-02 13:47:39

标签: c# castle-windsor fluent-interface

我刚刚开始使用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注册组件时,如何从配置文件中引用属性的任何想法?

谢谢

1 个答案:

答案 0 :(得分:1)

更新版本的Windsor(3.x)内置支持:

Component.For<Foo>().DependsOn(Dependency.OnAppConfigValue("someValue"))