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