gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:08:51 24 4
gpt4 key购买 nike

有没有办法制作一个允许自由格式 XML 正文的配置部分?我如何在代码中获得自由形式的主体?

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

<modules>
<module name="ModuleA" type="My.Namespace.ModuleA, My.Assembly">
<moduleConfig>
<serviceAddress>http://myserver/myservice.svc</serviceAddress>
</moduleConfig>
</module>
<module name="ModuleB" type="My.Namespace.ModuleB, My.OtherAssembly">
<moduleConfig>
<filePath>c:\directory</filePath>
</moduleConfig>
</module>
</modules>

因此一些代码会使用 ConfigurationManager.GetSection("modules") 从配置部分启动这些模块类型中的每一个我想在 moduleConfig 中传递 XML元素作为模块类构造函数的不透明配置值。

感谢任何意见!

最佳答案

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

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 看起来像:

<module name="ModuleA">
<config>
<filePath>C:\files\file.foo</filePath>
</config>
</module>

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

关于c# - app.config 中的自由格式 XML 配置部分正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com