2016-02-19 5 views
1

Я хочу использовать пользовательские элементы в моей конфигурации.ConfigurationSection vs IConfigurationSectionHandler

При написании моих пользовательских классов конфигурации я использовал ConfigurationSection, но когда мой код пытается получить доступ к информации из моих пользовательских элементов конфигурации он выдает ошибку о том, что:

Произошла ошибка при создании раздела конфигурации обработчика для XxxSection: Тип «Xxx» не наследуется от «System.Configuration.IConfigurationSectionHandler».

У меня было впечатление, что IConfigurationSectionHandler был обесценен в .NET Framework 2.0, поэтому было интересно, есть ли какие-либо обстоятельства, которые приведут к возникновению этой ошибки, если мой код использует .NET Framework 4.0, отладка через VS2013 в Windows 8.1 64-битная машина.

Большинство тем, которые я прочитал, обсуждают эти классы несколько лет и были примерно в то время, когда по-прежнему происходило снижение стоимости IConfigurationSectionHandler (было указано в некоторых местах, но не в документации и т. Д.), Поэтому возникла путаница вокруг него ,

Я бы хотел, чтобы избежать возврата к использованию обесцененных интерфейсов, если можно. Спасибо

ответ

4

Мне удалось решить, что случилось, configSection в верхней части конфигурационного файла была настроена неправильно. Тип должен всегда ссылаться на класс, который наследуется от ConfigurationSection:

<configuration> 
    <configSections> 
    <section name="purgeDirectorySection" type="Foo.FooBarSection, Foo"/> 
    </configSections> 
    <appSettings> 
    ... 
    </appSettings> 
    <FooBarSection> 
    ... 
    </FooBarSection> 
</configuration> 

Это теперь работает для меня. Надеюсь, это поможет другим, кто может испытать эту проблему.

Смежные вопросы