ConfigurationManager - 获取部分组内的部分

ConfigurationManager - get section inside of section group

我正在尝试做一些非常简单的事情:读取属于我的 App.config 文件中的分区组的分区的内容。

这应该很简单吧?

原来我已经尝试这样做了一个小时,进行了大量的谷歌搜索和调试,但我就是做不到。当我使用 ConfigurationManager.GetSection 时,它会 returns null - 这仅在所需部分不属于部分组时有效。

到目前为止,我只找到了 Microsoft 的 this 页面,该页面建议我自己解析 XML。认真的!?!?

我希望有人能帮助我,因为现在这让我想在 5 分钟内用 YAML 破解它,并且以后再也不使用 .NET。

您应该能够以 key/value 对的形式访问它们:

NameValueCollection section = (NameValueCollection)ConfigurationManager.GetSection("SectionName");
string userName = section["userName"];

尝试投射,看看是否能得到相同的结果。 如果不是 XML 的 Linq 答案总是一个很好的后备。

var section = XDocument.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).Root.Element("SectionName");

var userName= (string)section.Element("SomeElement").Elements("add")
    .Where(x => (string)x.Attribute("key") == "userName")
    .Single().Attribute("value");

我知道这个问题很老,但我想提交正确答案。

当您尝试从项目的 App.config 或 Web.config 中的某个部分读取值但该部分在一个部分组中时,您可以将这些值作为 key/value 对,如上一个答案所述。但是您不能只传递节名称,您必须传递格式为 {SectionGroupName}/{SectionName} 的字符串,如下所示:

var section = (NameValueCollection)ConfigurationManager.GetSection("SectionGroupName/SectionName");
var value = section["key"];