我正在考虑构建集中式服务,以便为经过适当身份验证的应用程序提供连接字符串。
为了使服务与正常进程兼容,我认为在app.config或web.config中覆盖System.Configuration ConnectionStrings是一件好事。
我曾考虑使用Moles来做这件事,但我找到的唯一例子是UnitTests。
我真正想要的是对System.Configuration.ConfigurationManager类的Mole覆盖,以便我可以专门覆盖ConnectionStringsGet方法以查找自定义样式的连接字符串。如果找不到,则将调用传递给原始ConfigurationManger代码,以便处理正常的连接字符串。
我还没有用Moles编写任何代码,因为我对如何开始这个想法感到头疼。如果有人有关于如何开始的指针,我会接受它并再去挖掘一些。
答案 0 :(得分:2)
在这种情况下,Moles似乎并不支持尝试覆盖System.Configuration。
我发现了一些帖子,显示了用于自定义system.configuration过程的有希望的方法。
首先是Andy Pook的博客文章http://andypook.blogspot.com/2007/07/overriding-configurationmanager.html,第二篇是CodeProject文章,扩展了Andy http://www.codeproject.com/Articles/69364/Override-Configuration-Manager提供的解决方案
这些文章对我的思考过程很有用。
答案 1 :(得分:0)
您可能最好创建一个接口来从配置文件中获取数据,以及一个只包装静态成员的类。然后,您可以执行自定义逻辑,然后回退到标准静态方法。