app.config中的自由格式XML配置部分正文

有没有办法建立一个允许自由forms的XML体的配置部分? 我如何在代码中获得自由forms的主体?

例如,我想像这样创建一个ModuleConfigurationSection:

   http://myserver/myservice.svc     c:\directory    

因此,一些代码会使用ConfigurationManager.GetSection("modules")从配置节中调出每个模块类型,并且我想将moduleConfig元素中的XML作为opaque配置值传递给模块类的构造函数。

任何输入赞赏!

这就是我最终完成此任务的方式:

 public class ModuleElement : ConfigurationElement { [ConfigurationProperty("name", IsRequired = true)] public string Name { get { return (string)base["name"]; } set { base["name"] = value; } } XElement _config; public XElement Config { get { return _config; } } protected override bool OnDeserializeUnrecognizedElement(string elementName, System.Xml.XmlReader reader) { if (elementName == "config") { _config = (XElement)XElement.ReadFrom(reader); return true; } else return base.OnDeserializeUnrecognizedElement(elementName, reader); } } 

所以xml看起来像:

   C:\files\file.foo   

config元素的主体可以是您喜欢的任何自由forms的xml。 假设您设置了一个集合,当您执行ConfigurationManager.GetSection("modules")您可以访问每个ModuleElement对象的Config属性作为表示config元素节点的XML的XElement。

在我的应用程序中,我无法使用.NET 3.5 Framework。 我使用了一种稍微不同的方法,并提出了这段代码:

 public class ModuleSection : ConfigurationSection { private const string ELEMENT_NAME_CONFIG = "config"; private XmlNode _configNode; [ConfigurationProperty("name", IsRequired = true)] public string Name { get { return (string)base["name"]; } set { base["name"] = value; } } public XmlNode Config { get { return _configNode; } } protected override bool OnDeserializeUnrecognizedElement(string elementName, XmlReader reader) { if(elementName.Equals(ELEMENT_NAME_CONFIG, StringComparison.Ordinal)) { // Add the unrecognized element. _configNode = _xmlDocument.ReadNode(reader); return true; } else { return base.OnDeserializeUnrecognizedElement(elementName, reader); } } }