Mercurial > silverbladetech
diff Chronosv2/source/Configuration/GenericElementCollection.cs @ 10:443821e55f06
Initial cleaned up add from Codeplex files
author | stevenh7776 stevenhollidge@hotmail.com |
---|---|
date | Tue, 21 Feb 2012 17:25:44 +0700 |
parents | |
children | 09d18d6e5f40 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Chronosv2/source/Configuration/GenericElementCollection.cs Tue Feb 21 17:25:44 2012 +0700 @@ -0,0 +1,134 @@ +using System.Configuration; + +namespace Chronos.Configuration +{ + /// <summary> + /// http://utahdnug.org/blogs/josh/archive/2007/08/21/generic-configurationelementcollection.aspx + /// </summary> + /// <typeparam name="K"></typeparam> + /// <typeparam name="V"></typeparam> + public abstract class GenericElementCollection<K, V> + : ConfigurationElementCollection where V : ConfigurationElement, new() + { + #region · Properties · + + /// <summary> + /// Gets the type of the <see cref="T:System.Configuration.ConfigurationElementCollection"/>. + /// </summary> + /// <value></value> + /// <returns> + /// The <see cref="T:System.Configuration.ConfigurationElementCollectionType"/> of this collection. + /// </returns> + public abstract override ConfigurationElementCollectionType CollectionType + { + get; + } + + /// <summary> + /// Gets the name used to identify this collection of elements in the configuration file when overridden in a derived class. + /// </summary> + /// <value></value> + /// <returns> + /// The name of the collection; otherwise, an empty string. The default is an empty string. + /// </returns> + protected abstract override string ElementName + { + get; + } + + #endregion + + #region · Indexers · + + /// <summary> + /// Gets the <see cref="ConfigurationElement"/> with the specified key. + /// </summary> + /// <value></value> + public V this[K key] + { + get { return (V)BaseGet(key); } + } + + /// <summary> + /// Gets the <see cref="ConfigurationElement"/> at the specified index. + /// </summary> + /// <value></value> + public V this[int index] + { + get { return (V)BaseGet(index); } + } + + #endregion + + #region · Constructors · + + /// <summary> + /// Initializes a new instance of the <see cref="GenericElementCollection<K, V>"/> class. + /// </summary> + public GenericElementCollection() + { + } + + #endregion + + #region · Methods · + + /// <summary> + /// Adds the specified path. + /// </summary> + /// <param name="path">The path.</param> + public void Add(V path) + { + BaseAdd(path); + } + + /// <summary> + /// Removes the specified key. + /// </summary> + /// <param name="key">The key.</param> + public void Remove(K key) + { + BaseRemove(key); + } + + #endregion + + #region · Overriden Methods · + + /// <summary> + /// When overridden in a derived class, creates a new <see cref="T:System.Configuration.ConfigurationElement"/>. + /// </summary> + /// <returns> + /// A new <see cref="T:System.Configuration.ConfigurationElement"/>. + /// </returns> + protected override ConfigurationElement CreateNewElement() + { + return new V(); + } + + /// <summary> + /// Gets the element key for a specified configuration element when overridden in a derived class. + /// </summary> + /// <param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.</param> + /// <returns> + /// An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>. + /// </returns> + protected override object GetElementKey(ConfigurationElement element) + { + return GetElementKey((V)element); + } + + #endregion + + #region · Protected Abstract Methods · + + /// <summary> + /// Gets the element key. + /// </summary> + /// <param name="element">The element.</param> + /// <returns></returns> + protected abstract K GetElementKey(V element); + + #endregion + } +} \ No newline at end of file