Castle Windsor Fluent API:如何将组件参数值设置为配置的属性
我刚刚开始对 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 注册组件时引用配置文件中的属性吗?
谢谢
I am just getting started with the Fluent registration for Castle Windsor and cant figure out how I can reference properties I have defined in the properties section of my XML configuration file when registering. So I have this code to register a component.
RegisterComponent(componentId, Component.For<ConnectionConfig>()
.ImplementedBy(typeof(ConnectionConfig))
.Named(componentId)
.LifeStyle.Singleton
.Parameters(
Parameter.ForKey("ConnectionId").Eq(connectionId),
Parameter.ForKey("CommandTimeoutSeconds").Eq("#{ConnectionInfo.DefaultTimeout}")));
The #{ConnectionInfo.DefaultTimeout} is a property I have defined in the XML config which is loaded into the container prior to the Fluent registrations, but this does not work, in this code the parameter passed to Eq() is treated as a literal (although this works for other components i.e. ${My.Component} would work)
Any ideas how I can reference properties from my configuration file while registering components through the new Fluent API?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Windsor (3.x) 的最新版本对此有内置支持:
More recent versions of Windsor (3.x) have a built-in support for this: