Подскажите, как сделать кастомную секцию, которая бы была коллекцией, а каждый элемент коллекции имел несколько атрибутов?
Т.е я допустим хочу, что бы я мо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 );
}
Конфиг:
Комментариев нет:
Отправить комментарий