У меня есть конфигурации, сохраненные в файле app.config, как показано ниже:
<configSections>
<sectionGroup name="FieldMappingSettings">
<section name="RequiredFields" type="System.Configuration.DictionarySectionHandler"/>
</sectionGroup>
</configSections>
<FieldMappingSettings>
<RequiredFields>
<add key="ColumnName 1" value="Config Value1" />
<add key="ColumnName 2" value="Config Value2" />
<add key="ColumnName 3" value="Config Value3" />
<add key="ColumnName 4" value="Config Value4" />
<add key="ColumnName 5" value="Config Value5" />
</RequiredFields>
</FieldMappingSettings>
Я читаю эти пары ключ-значение, используя
var requiredFields = (ConfigurationManager.GetSection("FieldMappingSettings/RequiredFields") as System.Collections.Hashtable)
.Cast<System.Collections.DictionaryEntry>()
.ToDictionary(n => n.Key.ToString(), n => n.Value.ToString());
Мне нужно использовать эту конфигурацию в тот же порядок для дальнейшей обработки, но поскольку System.Collections.Hashtable
используется для приведения, эти значения ключей не сохраняются в порядке их настройки (Hashtable
сохраняет их с использованием хэш-ключей).
Итак, вопрос:
Поскольку тип возвращаемого значения ConfigurationManager.GetSection()
равен object
, можем ли мы привести его к Dictionary<string, string>
вместо Hashtable
?
или
Есть ли другой способ прочитать пары ключ-значение, сохраняя порядок, в котором они настроены?