gpt4 book ai didi

caSTLe-windsor - 使用 Windsor 注入(inject)应用程序设置

转载 作者:行者123 更新时间:2023-12-03 23:53:54 25 4
gpt4 key购买 nike

如何使用 Windsor 容器将 appSettings 条目的值(来自 app.config 或 web.config)注入(inject)服务?如果我想将 Windsor 属性的值注入(inject)到服务中,我会这样做:

<properties>
<importantIntegerProperty>666</importantIntegerProperty>
</properties>
<component
id="myComponent"
service="MyApp.IService, MyApp"
type="MyApp.Service, MyApp"
>
<parameters>
<importantInteger>#{importantIntegerProperty}</importantInteger>
</parameters>
</component>

但是,我真正想做的是取 #{importantIntegerProperty} 所代表的值。来自一个应用程序设置变量,它可能定义如下:
<appSettings>
<add key="importantInteger" value="666"/>
</appSettings>

编辑:澄清;我意识到这在 Windsor 和 David Hayden article 中是不可能的。那 sliderhouserules指的其实是关于他自己(David Hayden)的IoC容器,而不是Windsor。

我肯定不是第一个遇到这个问题的人,所以我想知道其他人是如何解决这个问题的?

最佳答案

我最终根据网络上各种来源的提示提出了一个解决方案。最终结果虽然涉及从温莎逐字复制三个类并稍微修改它们。最终结果在 codeplex 上供您欣赏。

http://windsorappcfgprops.codeplex.com/

我很早以前就编写了这段代码,所以它基于 Windsor 1.0.3 - 是的,我花了很长时间才发布结果!

该代码允许您在 app.config(或 web.config,显然)中拥有它:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="theAnswer" value="42"/>
</appSettings>
</configuration>

...并从您的 Windsor XML 配置文件中访问它,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<castle>
<components>
<component
id="answerProvider"
service="Acme.IAnswerProvider, Acme"
type="Acme.AnswerProvider, Acme"
>
<parameters>
<theAnswer>#{AppSetting.theAnswer}</theAnswer>
</parameters>
</component>
</components>
</castle>

解决方案中有一个工作示例。

关于caSTLe-windsor - 使用 Windsor 注入(inject)应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com