将连接字符串注入DI已解析的类

时间:2011-05-05 16:13:41

标签: dependency-injection castle-windsor ioc-container castle

我正在使用Castle根据给定的接口创建我的数据库上下文。我的Installer类中有以下代码,目前工作正常。

private ConfigureDelegate ConfigureContext()
{
    return p => p.Named(p.ServiceType.Name)
        .LifeStyle.PerWebRequest
        .DependsOn(new { connectionString = ConfigurationManager.ConnectionStrings["conStringName"].ConnectionString });
}

但是我现在有一个场景,这个安装程序会找到我的界面的多个具体实现,其中每个应该提供一个不同的连接字符串。

这是否可行 - 如果是这样,有人可以指出我正确的方向。

TIA

1 个答案:

答案 0 :(得分:6)

是的,您可以编写一段代码来提供服务的连接字符串名称。也许是这样的:

private ConfigureDelegate ConfigureContext()
{
    return p => p.Named(p.ServiceType.Name)
        .LifeStyle.PerWebRequest
        .DependsOn(new
        {
            connectionString =
                ConfigurationManager
                    .ConnectionStrings[GetConnectionName(p.ServiceType.Name)]
                    .ConnectionString
        });
}

private string GetConnectionName(string serviceName)
{
    // return the connection name
}