ObjectCollection.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. using System;
  2. using System.Data;
  3. using System.Collections.Generic;
  4. namespace Ant.ORM
  5. {
  6. /// <summary>
  7. /// ObjectCollection 的摘要说明
  8. /// </summary>
  9. public class ObjectCollection<T> : IList<T>
  10. {
  11. List<T> lists;
  12. #region IList<T> 成员
  13. /// <summary>
  14. /// 查看对象在列表的索引
  15. /// </summary>
  16. /// <param name="item">对象实例</param>
  17. /// <returns>返回索引位置,-1表示没有</returns>
  18. public virtual int IndexOf(T item)
  19. {
  20. if (lists == null)
  21. {
  22. return -1;
  23. }
  24. else
  25. {
  26. return lists.IndexOf(item);
  27. }
  28. }
  29. /// <summary>
  30. ///
  31. /// </summary>
  32. /// <param name="index"></param>
  33. /// <param name="item"></param>
  34. public virtual void Insert(int index, T item)
  35. {
  36. if (item == null)
  37. return;
  38. if (this.lists == null)
  39. this.lists = new List<T>();
  40. if (!this.lists.Contains(item))
  41. {
  42. lists.Insert(index, item);
  43. }
  44. }
  45. /// <summary>
  46. ///
  47. /// </summary>
  48. /// <param name="index"></param>
  49. public virtual void RemoveAt(int index)
  50. {
  51. if (lists == null)
  52. return;
  53. else
  54. {
  55. lists.RemoveAt(index);
  56. }
  57. }
  58. /// <summary>
  59. ///
  60. /// </summary>
  61. /// <param name="index"></param>
  62. /// <returns></returns>
  63. public virtual T this[int index]
  64. {
  65. get
  66. {
  67. return lists[index];
  68. }
  69. set
  70. {
  71. lists[index] = value;
  72. }
  73. }
  74. #endregion
  75. #region ICollection<T> 成员
  76. /// <summary>
  77. ///
  78. /// </summary>
  79. /// <param name="item"></param>
  80. public virtual void Add(T item)
  81. {
  82. if (item == null)
  83. return;
  84. if (this.lists == null)
  85. this.lists = new List<T>();
  86. if (!this.lists.Contains(item))
  87. lists.Add(item);
  88. }
  89. /// <summary>
  90. ///
  91. /// </summary>
  92. public virtual void Clear()
  93. {
  94. if (lists != null)
  95. lists.Clear();
  96. }
  97. /// <summary>
  98. ///
  99. /// </summary>
  100. /// <param name="item"></param>
  101. /// <returns></returns>
  102. public virtual bool Contains(T item)
  103. {
  104. if (lists == null)
  105. return false;
  106. else
  107. return lists.Contains(item);
  108. }
  109. /// <summary>
  110. ///
  111. /// </summary>
  112. /// <param name="array"></param>
  113. /// <param name="arrayIndex"></param>
  114. public virtual void CopyTo(T[] array, int arrayIndex)
  115. {
  116. if (array == null)
  117. return;
  118. else
  119. {
  120. lists.CopyTo(array, arrayIndex);
  121. }
  122. }
  123. /// <summary>
  124. /// 记录总数
  125. /// </summary>
  126. public virtual int Count
  127. {
  128. get
  129. {
  130. if (lists == null)
  131. {
  132. return -1;
  133. }
  134. else
  135. {
  136. return lists.Count;
  137. }
  138. }
  139. }
  140. /// <summary>
  141. ///
  142. /// </summary>
  143. public virtual bool IsReadOnly
  144. {
  145. get
  146. {
  147. //throw new Exception("该方法没有实现!");
  148. return false;
  149. }
  150. }
  151. /// <summary>
  152. ///
  153. /// </summary>
  154. /// <param name="item"></param>
  155. /// <returns></returns>
  156. public virtual bool Remove(T item)
  157. {
  158. if (item == null)
  159. return true;
  160. if (lists == null)
  161. return true;
  162. else
  163. return lists.Remove(item);
  164. }
  165. #endregion
  166. #region IEnumerable<T> 成员
  167. /// <summary>
  168. ///
  169. /// </summary>
  170. /// <returns></returns>
  171. public virtual IEnumerator<T> GetEnumerator()
  172. {
  173. //return lists.GetEnumerator();
  174. //foreach (T t in this)
  175. //{
  176. // yield return t;
  177. //}
  178. for (int i = 0, count = this.Count; i < count; i++)
  179. {
  180. yield return (T)this[i];
  181. }
  182. //throw new Exception("The method or operation is not implemented.");
  183. }
  184. #endregion
  185. #region IEnumerable 成员
  186. /// <summary>
  187. ///
  188. /// </summary>
  189. /// <returns></returns>
  190. System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
  191. {
  192. return this.GetEnumerator();
  193. //throw new Exception("The method or operation is not implemented.");
  194. }
  195. #endregion
  196. }
  197. }