2009-12-02 39 views
5

在我永恆的追求中,我現在正在檢查mvc Turbine做IoC的骯髒工作。
我使用mvc Turbine書呆子晚餐例子作爲主角,而且事情看起來相當邏輯。 雖然我指的渦輪項目在這裏,我猜理念的背後是一些一般的圖案 安全的一些閱讀和罕見的播客,我是新來的國際奧委會概念,我有幾個問題。何處將連接字符串保存在IoC模式中?

到目前爲止,我對每個IRepository我要註冊
例如一個IServiceRegistration項:

public class UserRepositoryRegistration : IServiceRegistration 
{ 
    public void Register(IServiceLocator locator) 
    { 
     locator.Register<IUserRepository, UserRepository>(); 
    } 
} 

具體實施IUserRepository的需要一些配置雖然。類似於連接字符串,或者在此情況下是要使用的db4o文件的路徑。

我應該在哪裏提供這些信息?

回答

3

羅伯特和盧卡斯兩人都用他們的答案擊中頭部。賬戶中的所有「額外東西」都將存在於UserRepository類中。這是目前渦輪ND的實施方式。

然而,沒有什麼可以阻止您創建了一個名爲ConnectionStringProvider新類在UserRepository然後可以「注入」將提供連接字符串(不管它是硬編碼或者從一個配置文件讀取。

的代碼如下:。

public class ConnectionStringProvider { 
    public string ConnectionString { 
     get{ 
      // your impl here 
     } 
    } 
} 

public class UserRepository { 
    public UserRepository(ConnectionStringProvider provider){ 
     // set internal field here to use later 
     // with db connection 
    } 
} 

從這裏,你UserRepositoryRegistration類中添加一個登記ConnectionStringProvider和渦輪機將完成剩下的事情你

+0

謝謝,這是一個很好的解決方案雖然英里。 ght最初看起來像是過度使用,我目前在web.config文件中有連接字符串,但是我們正在計劃將所有應用程序的所有配置都放在數據庫中,並且僅爲應用程序提供對該數據庫的引用。那麼我會更喜歡配置的東西是可插入的。 – 2009-12-03 22:10:17

+0

也感謝您註冊以回答此問題。希望您享受您在SO的逗留 – 2009-12-04 07:07:18

2

在一般情況下,這僅僅是一個需要連接字符串或數據庫路徑的具體UserRepository的關注。通過在應用程序配置文件中放置路徑並讓具體的存儲庫直接提取配置數據,您可以做得很好。

並非所有的倉庫都將需要此信息,這是你必須擺在首位抽象的原因之一。例如,一個快速內存的具體IUserRepository將不需要數據庫的路徑或可能需要任何額外的配置才能工作。

1

與羅伯特類似,我建議將這個放到應用程序配置文件中,但是,每個注入類型都有特定的條目。這樣您的連接字符串或路徑可以在每次注入時自定義。

相關問題