我正在開發將由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. 便攜式類庫
- 2. 便攜式類庫反射
- 3. 便攜式類庫,XmlAnyElementAttribute
- 4. MvvmCross便攜式類庫 - System.Net.ServicePointManager
- 5. 在便攜式類庫
- 6. 便攜式類庫中的sqlite
- 7. 便攜式類庫中的SqlConnection
- 8. 共享[DataContract]類的便攜式類庫
- 9. 在VS2015中創建便攜式類庫
- 10. 在便攜式類庫中包含XPathSelectElement
- 11. SkyDrive中同步便攜式類庫/ mvvmcross
- 12. Netstandard庫 - 在便攜式類中引用
- 13. 便攜式PySide庫?
- 14. Socket.IO庫Xamarin.Forms(便攜式類庫)
- 15. 便攜式類庫部分類
- 16. 便攜式類庫的.Net和單
- 17. 便攜式類庫 - 目標的Silverlight 5
- 18. MonoDroid和MonoTouch的便攜式類庫
- 19. XmlTextReader的是便攜式類庫支持?
- 20. 便攜式類庫的IoC容器
- 21. 便攜式類庫上的WebProxy
- 22. 便攜式類庫(PCL)貢獻 - 加密
- 23. .NET便攜式類庫和UDP支持
- 24. 綁定重定向便攜式類庫
- 25. 沒有Xamarin便攜式類庫
- 26. Xamarin便攜式類庫問題
- 27. 便攜式類庫WebResponse StatusCode缺少
- 28. 便攜式類庫System.Object錯誤
- 29. 使用便攜式類庫帶SDK
- 30. VS 2013便攜式類庫windows.props
正常的庫訪問'ConfigurationManager'看起來有點可疑。這不應該是應用程序的責任,然後應用程序將配置對象傳遞給庫? – CodesInChaos 2013-04-21 12:23:34