我在C#中遇到了一個問題,當我想對數據庫執行查詢時,我創建了一個新的DBQuerier()
實例並調用其上的Run()
方法。在沒有參考的情況下保留數據
DBQuerier
可以連接到幾個數據庫中的一個,具體取決於傳遞給運行方法的內容 - 例如新的DBQuerier().Run(DBEnum.CatDatabase)
;
DBQuerier
是圖書館的一部分,因爲各種解決方案都使用它。
我有一個配置文件,我可以加載和解析,以獲得加載到內存中的所有連接,用於枚舉查找。但是,我不確定如何堅持這些信息。它看起來像依賴注入工作:
new DBQuerier(new MyConnectionStringLoader()).Run(...)
不過,我不希望它加載的文件,並解析數據庫查詢以這種方式運行的每一次它。我無法將它存儲在DBQuerier中,因爲每次都創建並丟棄該對象。
如果我創建一個ConnectionStringManager類,如果它是靜態的,那麼我不能幹淨地依賴注入MyConnectionStringLoader到它,並且它使得單元測試更難。如果我把它做成單身人士,我有一些類似的問題。
是否有解決此問題的好方法?谷歌搜索顯示無數帖子說'永遠不會使用靜態類或單身人士',所以我很困難。
永不言不絕!在這種情況下,我會說singleton和static是友好的。但是爲什麼你不用DBQuerier創建一個包含你需要的額外信息的類,比如ConnectionString? – Mono