0

这是我的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="MySection" type="MyApp.MySectionClass, MyApp"/>
    </configSections>

    <MySection name="SomeName" data_type="SomeDataType" file_name="file">
        <CollectionName>
          <add name="name1" param="-10" ping="3"/>
          <add name="name1" param="-10" ping="5"/>
          <add name="name2" param="-10" ping="3" param2="0.3" param3="0.2"/>
        </CollectionName>
    </MySection >

</configuration>

这是我尝试在我的配置文件中列出我的部分名称的代码:

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "path\\app.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
ConfigurationSectionCollection section_collection = config.Sections;

foreach (string key in section_collection.Keys) Console.WriteLine(key);

这是我得到的结果:

system.data.sqlclient
connectionStrings
system.webServer
system.data.dataset
satelliteassemblies
mscorlib
startup
runtime
appSettings
system.data.odbc
system.data
configProtectedData
system.codedom
uri
system.runtime.remoting
assemblyBinding
windows
system.data.oracleclient
MySection
system.windows.forms
system.diagnostics
system.data.oledb

如您所见,有我的部分名称,还有很多其他名称空间。为什么会这样?我怎样才能从 app.config 中只获取我的自定义部分?谢谢。

4

2 回答 2

0

这是一个好方法:

 var section = ConfigurationManager.GetSection("MySection");
    if (section != null)
    {
        var adds= (section as MySectionClass).CollectionName;
        Console.WriteLine(adds.Count);
        for (int i = 0; i < adds.Count; i++)
        {

        }
    }
于 2014-05-07T13:08:41.083 回答
0

此处建议了解决方法

IEnumerable<MySectionClass> section_collection = config.Sections.OfType<MySectionClass>();
于 2014-05-08T13:14:09.777 回答