4

我正在使用Castle来创建基于给定接口的数据库上下文。我在我的Installer类中有以下代码,此时此工作正常。注入连接字符串到DI解析类

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

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

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

TIA

回答

5

是的,这是可能的,如果你可以写一块,对于服务提供了连接字符串名称代码。也许是这样的:

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 
} 
+0

感谢马克,这是我怀疑 - 但像往常一样,它总是有助于让别人确认你的想法。 – 2011-05-06 08:30:03