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&lt;K, V&gt;"/> 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