Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

57 lines
1.4KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using HealthMonitor.Util.Entities.Base;
  5. using HealthMonitor.Util.Entities.Interfaces;
  6. namespace HealthMonitor.Util.Common
  7. {
  8. public class EntityUtils
  9. {
  10. ///// <summary>
  11. ///// 根据实体主键类型,把参数转换为对应的类型
  12. ///// </summary>
  13. ///// <typeparam name="T"></typeparam>
  14. ///// <param name="value"></param>
  15. ///// <returns></returns>
  16. //public static object GetWrapKeyValue<T>(string value) where T : EntityBase
  17. //{
  18. // var type = typeof(T);
  19. // var ifs = type.GetInterfaces();
  20. // if (ifs.Contains(typeof(IKeyIntType)))
  21. // {
  22. // int key;
  23. // key = int.TryParse(value, out key) ? key : 0;
  24. // return key;
  25. // }
  26. // if (ifs.Contains(typeof(IKeyLongType)))
  27. // {
  28. // long key;
  29. // key = long.TryParse(value, out key) ? key : 0;
  30. // return key;
  31. // }
  32. // return value;
  33. //}
  34. //public static bool HasAutoGenerateKey<T>()
  35. //{
  36. // return HasAutoGenerateKey(typeof(T));
  37. //}
  38. public static bool HasAutoGenerateKey(Type type)
  39. {
  40. var ifs = type.GetInterfaces();
  41. var numericTypes = new List<Type> { typeof(IKeyIntType), typeof(IKeyLongType) };
  42. var manualTypes = new List<Type> { typeof(IKeyIntNeverGeneratedType), typeof(IKeyLongNeverGeneratedType) };
  43. if(ifs.Any(e => numericTypes.Contains(e)) && ifs.Any(e => manualTypes.Contains(e)) == false)
  44. {
  45. return true;
  46. }
  47. return false;
  48. }
  49. }
  50. }