MakeShowFields.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Ant.ORM
  7. {
  8. #region 多表显示字段实体定义
  9. /// <summary>
  10. /// 显示字段类
  11. /// </summary>
  12. public class MakeShowFields
  13. {
  14. public Dictionary<string, FieldColumnsList> FieldList = new Dictionary<string, FieldColumnsList>();
  15. private FieldColumnsList fieldcolumnlist;
  16. private static object lockHelper = new object();
  17. private static volatile MakeShowFields instance = null;
  18. public MakeShowFields()
  19. {
  20. fieldcolumnlist = new FieldColumnsList();
  21. }
  22. public static MakeShowFields Instance
  23. {
  24. get
  25. {
  26. if (instance == null)
  27. {
  28. lock (lockHelper)
  29. {
  30. if (instance == null)
  31. {
  32. instance = new MakeShowFields();
  33. }
  34. }
  35. }
  36. return instance;
  37. }
  38. }
  39. /// <summary>
  40. /// 设置显示字段所属表
  41. /// </summary>
  42. /// <typeparam name="T"></typeparam>
  43. public void SetTableName<T>()
  44. {
  45. fieldcolumnlist = new FieldColumnsList();
  46. fieldcolumnlist.TableName = typeof(T).Name;
  47. }
  48. #region IDictionary 成员
  49. /// <summary>
  50. /// 向集合中添加元素
  51. /// </summary>
  52. /// <param name="key"></param>
  53. /// <param name="value"></param>
  54. public void Add(Enum filed, string asname)
  55. {
  56. FieldColumns colum = new FieldColumns();
  57. colum.FieldColumn = filed.ToString();
  58. colum.FieldAsName = asname;
  59. if (fieldcolumnlist.FieldList.IsNull())
  60. fieldcolumnlist.FieldList = new List<FieldColumns>();
  61. fieldcolumnlist.FieldList.Add(colum);
  62. if (!Contains(fieldcolumnlist.TableName))
  63. FieldList.Add(fieldcolumnlist.TableName, fieldcolumnlist);
  64. else
  65. FieldList[fieldcolumnlist.TableName] = fieldcolumnlist;
  66. }
  67. /// <summary>
  68. /// 向集合中添加元素
  69. /// </summary>
  70. /// <param name="key"></param>
  71. /// <param name="value"></param>
  72. public void Add(params Enum[] fileds)
  73. {
  74. foreach(var filed in fileds)
  75. {
  76. FieldColumns colum = new FieldColumns();
  77. colum.FieldColumn = filed.ToString();
  78. if (fieldcolumnlist.FieldList.IsNull())
  79. fieldcolumnlist.FieldList = new List<FieldColumns>();
  80. fieldcolumnlist.FieldList.Add(colum);
  81. if (!Contains(fieldcolumnlist.TableName))
  82. FieldList.Add(fieldcolumnlist.TableName, fieldcolumnlist);
  83. else
  84. {
  85. FieldList[fieldcolumnlist.TableName] = fieldcolumnlist;
  86. }
  87. }
  88. }
  89. #region 不用了
  90. ///// <summary>
  91. ///// 向集合中添加元素
  92. ///// </summary>
  93. ///// <param name="key"></param>
  94. ///// <param name="value"></param>
  95. //public void Add(string filed, string asname)
  96. //{
  97. // FieldColumns colum = new FieldColumns();
  98. // colum.FieldColumn = filed;
  99. // colum.FieldAsName = asname;
  100. // if (list.FieldList.IsNull())
  101. // list.FieldList = new List<FieldColumns>();
  102. // list.FieldList.Add(colum);
  103. // if (!Contains(list.TableName))
  104. // FieldList.Add(list.TableName, list);
  105. // else
  106. // FieldList[list.TableName] = list;
  107. //}
  108. ///// <summary>
  109. ///// 向集合中添加元素
  110. ///// </summary>
  111. ///// <param name="key"></param>
  112. ///// <param name="value"></param>
  113. //public void Add(string filed)
  114. //{
  115. // FieldColumns colum = new FieldColumns();
  116. // colum.FieldColumn = filed;
  117. // if (list.FieldList.IsNull())
  118. // list.FieldList = new List<FieldColumns>();
  119. // list.FieldList.Add(colum);
  120. // if (!Contains(list.TableName))
  121. // {
  122. // FieldList.Add(list.TableName, list);
  123. // }
  124. // else
  125. // FieldList[list.TableName] = list;
  126. //}
  127. #endregion
  128. /// <summary>
  129. /// 移除集合中所有元素
  130. /// </summary>
  131. public void Clear()
  132. {
  133. FieldList.Clear();
  134. }
  135. /// <summary>
  136. /// 判断集合中是否有该元素
  137. /// </summary>
  138. /// <param name="key"></param>
  139. /// <returns>有返true;没有返回false</returns>
  140. public bool Contains(string key)
  141. {
  142. return FieldList.ContainsKey(key);
  143. }
  144. public IDictionaryEnumerator GetEnumerator()
  145. {
  146. return FieldList.GetEnumerator();
  147. }
  148. /// <summary>
  149. /// 表
  150. /// </summary>
  151. // public string TableName { get; set; }
  152. public ICollection Keys
  153. {
  154. get { return FieldList.Keys; }
  155. }
  156. /// <summary>
  157. /// 移除集合中元素
  158. /// </summary>
  159. /// <param name="key"></param>
  160. public void Remove(string key)
  161. {
  162. FieldList.Remove(key);
  163. }
  164. /// <summary>
  165. /// 获取集合中值
  166. /// </summary>
  167. public ICollection Values
  168. {
  169. get { return FieldList.Values; }
  170. }
  171. /// <summary>
  172. /// 获取key的值
  173. /// </summary>
  174. /// <param name="key"></param>
  175. /// <returns></returns>
  176. public FieldColumnsList this[string key]
  177. {
  178. get
  179. {
  180. if (Contains(key))
  181. return FieldList[key];
  182. else
  183. return null;
  184. }
  185. set
  186. {
  187. if (Contains(key))
  188. FieldList[key] = value;
  189. else
  190. FieldList.Add(key, value);
  191. }
  192. }
  193. #endregion
  194. }
  195. public class FieldColumnsList
  196. {
  197. /// <summary>
  198. /// 所有显示字段列表
  199. /// </summary>
  200. public List<FieldColumns> FieldList
  201. {
  202. get;
  203. set;
  204. }
  205. /// <summary>
  206. /// 表
  207. /// </summary>
  208. public string TableName { get; set; }
  209. }
  210. public class FieldColumns
  211. {
  212. /// <summary>
  213. /// 列名
  214. /// </summary>
  215. public string FieldColumn
  216. {
  217. get;
  218. set;
  219. }
  220. /// <summary>
  221. /// 别名
  222. /// </summary>
  223. public string FieldAsName
  224. {
  225. get;
  226. set;
  227. }
  228. }
  229. #endregion
  230. }