Castle Windsor配置指向web.config中的connectionStrings部分

时间:2010-04-07 09:28:41

标签: castle-windsor connection-string

我想将连接字符串注入我的存储库,但理想情况下,我希望此连接字符串位于我的web.config connectionStrings部分而不是我的windsor配置中。这可能吗?

我知道我可以使用流畅的界面轻松实现这一点,但我的老板想要一个xml配置文件。

我也知道我可以定义一个属性并在我的windsor配置中使用它来传递参数,但我有其他代码直接从web.config读取连接字符串,并不真正想要两个相同的地方的connectionString。

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点:

  • This question的解决方案与您想要的解决方案非常相似
  • 您可以使用如下界面标记需要connectionstring的类:

    interface IRequiresConnectionString {
        string ConnectionString {get;set;}
    }
    

    然后您订阅事件container.Kernel.ComponentModelCreated(或编写IContributeComponentModelConstruction),检查组件实现类型,如果它实现了IRequiresConnectionString,则将connectionString放在组件的参数中。

  • 如果您遵循约束条件参数始终被称为connectionString(或您喜欢的任何内容)的约定,您也可以在没有接口的情况下执行上述操作,但如果您不小心为参数命名,则这很容易出错{ {1}}它不会被注入。