2012-12-13 88 views
0

應用程序的結構是我有兩個單例。一個用於管理工作,一個用於管理SQLite數據庫。從插件訪問單例

工作管理器加載希望訪問數據庫的插件。無論如何要讓他們訪問Singleton數據庫管理器?如果我將數據庫管理器類包含在插件DLL中 - 是否可行?

我知道另一種方式是在插件接口中有一個字段,並在插件加載時設置該字段,我只是想知道是否有辦法做到這一點,並保持我的插件架構。

謝謝。

編輯

限制:

  • 無法使用外部庫。
  • 我希望可以從插件訪問的單例類集,並且始終是固定的。

回答

0

你應該看看依賴注入容器,如Castle WindowsSprint.NETNinject。這些將允許您自動注入您的依賴關係,或允許您的插件通過使用容器訪問您的單身人士。 我已經使用了許多Castle Windsor並可以推薦它,但其他人提到的也被很多開發人員使用。對不起,但忘了提及Microsoft Unity container

+0

我明白這是「最好」的答案,但可以說我不擔心可擴展性,需要插件「看」一組固定的單例類。或者我不允許使用外部庫 - 解決方案是什麼? – Cheetah

+0

這真的取決於。你也控制插件開發嗎?可以使用靜態方法在允許訪問單例的插件之間共享DLL。主要的一點是,你需要直接注入,或者提供插件的必需實例。如果可能的話,你也可以傳遞一個工廠方法作爲委託,它返回所需的單例接口。我假設你使用一個接口而不是一個類的直接實例。 – Bigtoe