LookupValueCollection.cs
上传用户:husern
上传日期:2022-03-24
资源大小:534k
文件大小:6k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : LookupValueCollection.cs
  3. // project    : Itenso Web User Forms
  4. // created    : Jani Giannoudis - 2008.10.30
  5. // language   : c#
  6. // environment: .NET 2.0
  7. // copyright  : (c) 2008 by Itenso GmbH, Switzerland
  8. // --------------------------------------------------------------------------
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. namespace Itenso.WebUserForms.Data.Lookup
  13. {
  14. // ------------------------------------------------------------------------
  15. public sealed class LookupValueCollection : ILookupValueCollection
  16. {
  17. // ----------------------------------------------------------------------
  18. /// <summary>
  19. /// Creates a new empty instance.
  20. /// </summary>
  21. public LookupValueCollection( string name )
  22. {
  23. if ( string.IsNullOrEmpty( name ) )
  24. {
  25. throw new ArgumentException( "name" );
  26. }
  27. this.name = name;
  28. } // LookupValueCollection
  29. // ----------------------------------------------------------------------
  30. /// <summary>
  31. /// Creates a new instance with all the values of the given collection.
  32. /// </summary>
  33. /// <param name="values">the values to add. may not be null.</param>
  34. public LookupValueCollection( string name, IEnumerable<ILookupValue> values )
  35. : this( name )
  36. {
  37. AddAll( values );
  38. } // LookupValueCollection
  39. // ----------------------------------------------------------------------
  40. public string Name
  41. {
  42. get { return this.name; }
  43. } // Name
  44. // ----------------------------------------------------------------------
  45. public int Count
  46. {
  47. get { return this.values.Count; }
  48. } // Count
  49. // ----------------------------------------------------------------------
  50. public ILookupValue this[ int index ]
  51. {
  52. get { return this.values[ index ]; }
  53. } // this[int]
  54. // ----------------------------------------------------------------------
  55. public ILookupValue this[ string key ]
  56. {
  57. get 
  58. {
  59. if ( string.IsNullOrEmpty( key ) )
  60. {
  61. throw new ArgumentNullException( "key" );
  62. }
  63. foreach ( ILookupValue value in this )
  64. {
  65. if ( key.Equals( value.Key ) )
  66. {
  67. return value;
  68. }
  69. }
  70. return null;
  71. }
  72. } // this[string]
  73. // ----------------------------------------------------------------------
  74. IEnumerator IEnumerable.GetEnumerator()
  75. {
  76. return values.GetEnumerator();
  77. } // IEnumerable.GetEnumerator
  78. // ----------------------------------------------------------------------
  79. public IEnumerator<ILookupValue> GetEnumerator()
  80. {
  81. return this.values.GetEnumerator();
  82. } // GetEnumerator
  83. // ----------------------------------------------------------------------
  84. public int IndexOf( ILookupValue value )
  85. {
  86. return this.values.IndexOf( value );
  87. } // IndexOf
  88. // ----------------------------------------------------------------------
  89. public int Add( ILookupValue value )
  90. {
  91. if ( value == null )
  92. {
  93. throw new ArgumentNullException( "value" );
  94. }
  95. int insertPos = values.Count;
  96. this.values.Add( value );
  97. return insertPos;
  98. } // Add
  99. // ----------------------------------------------------------------------
  100. public void Add( ILookupValue value, int pos )
  101. {
  102. if ( value == null )
  103. {
  104. throw new ArgumentNullException( "value" );
  105. }
  106. this.values.Insert( pos, value );
  107. } // Add
  108. // ----------------------------------------------------------------------
  109. public void AddAll( IEnumerable<ILookupValue> values )
  110. {
  111. if ( values == null )
  112. {
  113. throw new ArgumentNullException( "values" );
  114. }
  115. foreach ( ILookupValue value in this.values )
  116. {
  117. Add( value );
  118. }
  119. } // AddAll
  120. // ----------------------------------------------------------------------
  121. public void Remove( ILookupValue value )
  122. {
  123. this.values.Remove( value );
  124. } // Remove
  125. // ----------------------------------------------------------------------
  126. public void RemoveAt( int index )
  127. {
  128. this.values.RemoveAt( index );
  129. } // RemoveAt
  130. // ----------------------------------------------------------------------
  131. public void Clear()
  132. {
  133. this.values.Clear();
  134. } // Clear
  135. // ----------------------------------------------------------------------
  136. public ILookupValue[] ToArray()
  137. {
  138. ILookupValue[] entries = new ILookupValue[ Count ];
  139. if ( entries.Length > 0 )
  140. {
  141. CopyTo( entries, 0 );
  142. }
  143. return entries;
  144. } // ToArray
  145. // ----------------------------------------------------------------------
  146. public void CopyTo( ILookupValue[] array, int index )
  147. {
  148. this.values.CopyTo( array, index );
  149. } // CopyTo
  150. // ----------------------------------------------------------------------
  151. public override bool Equals( object obj )
  152. {
  153. return CollectionTool.AreEqual( this, obj );
  154. } // Equals
  155. // ----------------------------------------------------------------------
  156. public override int GetHashCode()
  157. {
  158. return CollectionTool.ComputeHashCode( this );
  159. } // GetHashCode
  160. // ----------------------------------------------------------------------
  161. public override string ToString()
  162. {
  163. return CollectionTool.ToString( this );
  164. } // ToString
  165. // ----------------------------------------------------------------------
  166. // members
  167. private readonly List<ILookupValue> values = new List<ILookupValue>();
  168. private readonly string name;
  169. } // class LookupValueCollection
  170. } // namespace Itenso.WebUserForms.Data.Lookup
  171. // -- EOF -------------------------------------------------------------------