我正在開發將由Windows Store和WP8應用程序使用的PCL。這個庫需要一些配置,例如遠程服務網址。我想把它們放到app.config中並使用ConfigurationManager檢索它們,但System.Configuration在PCL中似乎不可用。便攜式類庫中的配置值
回答
我會創建一個配置類。在最簡單的情況下它可能看起來像:
public class MyLibraryConfig
{
public string RemoteServiceUrl{get;set;}
}
然後通過這個類的一個實例,通過標準的依賴注入技術庫。例如,將它傳遞給構造函數並將其存儲在一個字段中。然後,應用程序有責任從文件中讀取配置ConfigurationManager
等。
IMO這是更好的設計,我會用它來查詢配置管理器,即使在我可以訪問ConfigurationManager
的庫中。否則,您會強制應用程序使用單個配置並使用特定的配置機制。
你也可以使用一個接口或一個不可變類。這稍微複雜一些,但IMO更好的設計。
你能證明爲什麼在庫類中使用應用程序設置是件壞事嗎?這種配置機制是不是被設計用於這種方式? – filip 2013-04-21 12:55:55
決定使用哪種配置是應用程序的責任,而不是庫的責任。在應用程序的啓動代碼中訪問'ConfigurationManager'沒有問題,但是在庫中訪問它不是。避免訪問庫中的'ConfigurationManager'是避免單例和全局變量的特例。如果你想在一個單獨的過程中使用兩個實例庫?你如何提供測試配置?如果圖書館的使用者使用不同的配置機制呢? – CodesInChaos 2013-04-21 12:59:59
AppSettings顧名思義就是應用程序特定設置的集合。庫代表可以被不同應用程序重用的代碼,這些應用程序可能有不同的分組方式。當然,如果您正在使用可移植類庫,則應該比使用AppSettings更加普遍地訪問配置信息。 – 2013-04-24 12:39:43
- 1. 便攜式類庫中的sqlite
- 2. 共享[DataContract]類的便攜式類庫
- 3. 在VS2015中創建便攜式類庫
- 4. Netstandard庫 - 在便攜式類中引用
- 5. 便攜式PySide庫?
- 6. 便攜式類庫的IoC容器
- 7. MonoDroid和MonoTouch的便攜式類庫
- 8. 便攜式類庫 - 目標的Silverlight 5
- 9. 沒有Xamarin便攜式類庫
- 10. Xamarin便攜式類庫問題
- 11. 使用便攜式類庫帶SDK
- 12. 使數據庫便攜式
- 13. 便攜式C#數據庫
- 14. 68000,便攜式JIT庫
- 15. 便攜式庫錯誤
- 16. 便攜式Eclipse
- 17. Windbg便攜式?
- 18. 便攜式erlang
- 19. C++中的便攜式wchar_t
- 20. 便攜式方式
- 21. Xamarin.Forms使用Sharp.XMPP庫的便攜式類庫項目
- 22. 將便攜式類庫遷移到新的DNX共享庫?
- 23. 無法返回便攜式類庫中的異步等待
- 24. Spinwait在便攜式類庫中的一些自旋
- 25. 要在便攜式C++庫中使用的整型類型
- 26. Windows.Storage命名空間中的便攜式類庫項目
- 27. 便攜式庫的語言選擇
- 28. 良好的便攜式SIMD庫
- 29. 如何保持便攜庫的配置文件是最新的
- 30. 分配一個便攜式子網
正常的庫訪問'ConfigurationManager'看起來有點可疑。這不應該是應用程序的責任,然後應用程序將配置對象傳遞給庫? – CodesInChaos 2013-04-21 12:23:34