using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; namespace SOH.Configuration { public class MyAssemblySection : ConfigurationSection { public const string EventSection = "MyAssemblyElementsConfiguration"; private const string EventConfigElementsKey = "MyAssemblyElements"; [ConfigurationProperty(EventConfigElementsKey, IsDefaultCollection = true, IsRequired = true)] public MyAssemblyElements MyAssemblyElements { get { return (MyAssemblyElements)this[EventConfigElementsKey]; } set { base[EventConfigElementsKey] = value; } } } public class MyAssemblyElements : ConfigurationElementCollection { public void Add(MyAssemblyElement element) { base.BaseAdd(element); } public MyAssemblyElement this[int index] { get { return base.BaseGet(index) as MyAssemblyElement; } set { if (base.BaseGet(index) != null) { base.BaseRemoveAt(index); } this.BaseAdd(index, value); } } protected override ConfigurationElement CreateNewElement() { return new MyAssemblyElement(); } protected override object GetElementKey(ConfigurationElement element) { return ((MyAssemblyElement)element).ElementInformation; } } public class MyAssemblyElement : ConfigurationElement { private const string nameName = "name"; private const string typeName = "type"; private const string assemblyName = "assembly"; [ConfigurationProperty(MyAssemblyElement.nameName, IsRequired = true)] public string name { get { return (string)this[nameName]; } set { base[nameName] = value; } } [ConfigurationProperty(MyAssemblyElement.typeName, IsRequired = true)] public string type { get { return (string)this[typeName]; } set { base[typeName] = value; } } [ConfigurationProperty(MyAssemblyElement.assemblyName, IsRequired = true)] public string assembly { get { return (string)this[assemblyName]; } set { base[assemblyName] = value; } } } }