Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Кастомный app.config

Подскажите, как сделать кастомную секцию, которая бы была коллекцией, а каждый элемент коллекции имел несколько атрибутов?
Т.е я допустим хочу, что бы я моu работать таким образом с конфигурацией:
Settings.Default.CustomConf[0].attr1 Settings.Default.CustomConf[0].attr2


Ответ

public class StartupFoldersConfigSection : ConfigurationSection { [ConfigurationProperty( "Folders" )] public FoldersCollection FolderItems { get { return ( (FoldersCollection)( base[ "Folders" ] ) ); } } }
[ConfigurationCollection( typeof( FolderElement ) )] public class FoldersCollection : ConfigurationElementCollection { protected override ConfigurationElement CreateNewElement() { return new FolderElement(); }
protected override object GetElementKey( ConfigurationElement element ) { return ( (FolderElement)( element ) ).FolderType; }
public FolderElement this[int idx ] { get{return (FolderElement) BaseGet(idx); } } }
public class FolderElement : ConfigurationElement {
[ConfigurationProperty("folderType", DefaultValue="", IsKey=true, IsRequired=true)] public string FolderType { get {return ((string) (base["folderType"]));} set{base["folderType"] = value; } }
[ConfigurationProperty( "path", DefaultValue = "", IsKey = false, IsRequired = false )] public string Path { get{return ( (string)( base[ "path" ] ) ); } set{base[ "path" ] = value; } } }
Использование:
StartupFoldersConfigSection section = (StartupFoldersConfigSection)ConfigurationManager.GetSection( "StartupFolders" );
if ( section != null ) { System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].FolderType ); System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].Path ); }
Конфиг:


Комментариев нет:

Отправить комментарий