dependency-injection - 将连接字符串注入(inject) DI 解析的类

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

我正在使用 CaSTLe 基于给定接口(interface)创建我的数据库上下文。我的安装程序类中有以下代码,目前工作正常。

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

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

这可能吗 - 如果是这样,有人能指出我正确的方向吗?

TIA

最佳答案

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

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
}

关于dependency-injection - 将连接字符串注入(inject) DI 解析的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900936/

相关文章:

c# - 如何通过 Windsor 的接口(interface)和命名空间注册类?

dependency-injection - 使用依赖注入(inject)时使用工厂创建多个对象

dependency-injection - 何时使用 IOC 容器?

php - Laravel 5.8 : How to resolve auth()->user() inside Global Scope's apply method?

go - 在 Golang 中进行依赖注入(inject)的最佳方式是什么

java - 子组件中的 Dagger 2 模块覆盖

java - Weld 和测试 jar

javascript - Angular 错误: [$injector:unpr] Filtering Error

inversion-of-control - CaSTLe.Windsor 拦截机的生活方式

c# - 如何在服务中获取 Controller 的 ModelState 以进行验证