Объект GetSection не может быть приведен к IDictionary <> - PullRequest
0 голосов
/ 21 января 2012

Надеюсь, мне просто не хватает чего-то простого.Мне нужно для чтения / записи в разделе моего файла exe.config.У меня есть это в моем коде:

var appConfiguration = ConfigurationManager.OpenExeConfiguration("Mytest.Console.exe");
var fileEnvironment = appConfiguration.GetSection("fileEnvironment");

, и это мой app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="fileEnvironment" type="System.Configuration.DictionarySectionHandler"/>
    </configSections>

    <fileEnvironment>
        <add key="TestEntry1" value="A nice value"/>
        <add key="TestEntry2" value="Another value"/>
    </fileEnvironment>
</configuration>

Моя переменная appConfiguration возвращается как {System.Configuration.Configuration} и "HasFile"свойство установлено в true.

Без приведения моя переменная" fileEnvironment "возвращается как System.Configuration.DefaultSection.Когда я добавляю в качестве IDictionary<string, string> к методу GetSection fileEnvironment, это ноль.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 октября 2014

Согласно этой старой статье , когда секция реализована с использованием DictionarySectionHandler, ConfigurationManager.GetSection(), вернется неуниверсальный IDictionary и не и IDictionary<T,V>. Вот почему ваш актерский состав провалился.

Хотя в наше время это выглядит так, как будто на самом деле возвращает HashTable.

0 голосов
/ 22 января 2012

Я продолжал исследовать проблему со словарем и придумал этот стекопоток Вопросы и ответы ! Он создает коллекцию вместо словаря, но указывает путь к решению. Спасибо за все время.

...