我正在开发将由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