none
Как написать Wrapper-класс для секции appSettings стороннего .config файла? RRS feed

  • Общие обсуждения

  • В сети есть куча примеров как писать враппер для CustomSection.
    При попытке применить подобный подход для секции appSettings я столкнулся с проблемой - враппер наследует от ConfigurationSection, т.к. класс AppSettingsSection запечатан, потому я пока не могу понять, как при использовании привести его к AppSettingsSection.

    Может у вас найдутся какие-нибудь идеи?

    Враппер:

    public sealed class Clent_exe_AppConfigSectionHandler : ConfigurationSection
    	{
    		public Clent_exe_AppConfigSectionHandler()
    		{
    
    		}
    
    		[ConfigurationProperty( "ValidBrushColor",
    			DefaultValue = "107814",
    			IsRequired = true,
    IsKey = true )]
    		public string validBrushColor
    		{
    			get
    			{
    				return ( string )this[ "ValidBrushColor" ];
    			}
    			set
    			{
    				this[ "ValidBrushColor" ] = value;
    			}
    		}
    	}
    

    Попытка использования:
    var configMap = new ExeConfigurationFileMap { ExeConfigFilename = Properties.Settings.Default.client_exe_config_path };
    Configuration externalConfig = ConfigurationManager.OpenMappedExeConfiguration( configMap, ConfigurationUserLevel.None );
    Clent_exe_AppConfigSectionHandler ClientAppconfigSection = new Clent_exe_AppConfigSectionHandler();
    ClientAppconfigSection = externalConfig.GetSection( "appSettings" ) as Clent_exe_AppConfigSectionHandler;
    

    На последней строке, собственно, происходит затычка - во время рантайма ничего не происходит, но если обернуть это дело в try, то выдаст в тексте ошибки Unable to cast...
    24 июня 2011 г. 13:22

Все ответы

  • Насколько я понял, вам нужен доступ к коллекции из AppSettings как к полям какого-то класса? Как вариант - сделать враппер.
    27 июня 2011 г. 10:49
    Отвечающий
  • Уважаемый пользователь, пожалуйста, не забывайте отмечать ответ или ответы, решающие вашу проблему. Для этого под каждым сообщением есть кнопка 'Пометить как ответ'. Спасибо.

    Если ответ не решает проблему - то не оставляйте топик без комментариев.


    Для связи [mail]
    29 июня 2011 г. 4:57