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

ここで回避策が提案されました

IEnumerable<MySectionClass> section_collection = config.Sections.OfType<MySectionClass>();
于 2014-05-08T13:14:09.777 に答える
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 に答える