有没有办法获取基于任意 xml 的 System.Configuration.Configuration 实例?
Posted
技术标签:
【中文标题】有没有办法获取基于任意 xml 的 System.Configuration.Configuration 实例?【英文标题】:Is there a way to get a System.Configuration.Configuration instance based on arbitrary xml? 【发布时间】:2010-09-06 11:07:43 【问题描述】:我正在尝试对我编写的自定义 ConfigurationSection 进行单元测试,并且我想为每个测试将一些任意配置 XML 加载到 System.Configuration.Configuration 中(而不是将测试配置 xml 放入 Tests.dll .config 文件。也就是说,我想做这样的事情:
Configuration testConfig = new Configuration("<?xml version=\"1.0\"?><configuration>...</configuration>");
MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection");
Assert.That(section != null);
但是,ConfigurationManager 似乎只会为您提供与 EXE 文件或机器配置相关联的配置实例。有没有办法将任意 XML 加载到配置实例中?
【问题讨论】:
【参考方案1】:其实我发现了一种方法....
您需要定义一个继承自原始配置部分的新类,如下所示:
public class MyXmlCustomConfigSection : MyCustomConfigSection
public MyXmlCustomConfigSection (string configXml)
XmlTextReader reader = new XmlTextReader(new StringReader(configXml));
DeserializeSection(reader);
然后,您可以按如下方式实例化您的 ConfigurationSection 对象:
string configXml = "<?xml version=\"1.0\"?><configuration>...</configuration>";
MyCustomConfigSection config = new MyXmlCustomConfigSection(configXml);
希望它可以帮助某人:-)
【讨论】:
实际回答他问题的道具。 虽然自定义 Xml 读取是一个很好的解决方案,但 xml sn-p 不正确。 DeserializeSection 期望 xml 只是像我认为您正在寻找的是 ConfigurationManager.OpenMappedExeConfiguration
它允许您打开使用文件路径指定的配置文件(包裹在ExeConfigurationFileMap 中)
如果其他发帖人说的是真的,并且您不希望创建一个全新的 XML 文件进行测试,那么我建议您将配置编辑放在测试方法本身中,然后针对新更改的配置数据。
【讨论】:
【参考方案3】:看看班级的成员,我会说答案可能是否定的*。我不确定您为什么要这样做,而不是创建自己的 XML 配置文件。
*不,不包括凌乱的反射技巧
【讨论】:
以上是关于有没有办法获取基于任意 xml 的 System.Configuration.Configuration 实例?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 XSLT 基于 XML 中的元素复制 XML 节点 n 次?
有没有办法使用 XSLT 基于 XML 中的元素复制 XML 节点 n 次?
有没有办法在 jQuery 中获取类似 JSONP 的 XML 获取?
玩机教程----安卓机型解锁system分区 任意修改删除系统文件
使用 System.Xml.XmlDocument 时是不是可以从 System.Xml.XmlNode 获取行号/位置?