IIDGenerator.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using CommonUnit.Base;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace CommonUnit.IDGenerator
  7. {
  8. /// <summary>
  9. /// 主键生成接口
  10. /// </summary>
  11. public interface IIDGenerator
  12. {
  13. /// <summary>
  14. /// 生成新主键
  15. /// </summary>
  16. /// <param name="parm">生成主键参数</param>
  17. /// <returns>生成后新主键</returns>
  18. string GeneratNewID(IDGenerateParm parm);
  19. }
  20. /// <summary>
  21. /// 主键生成参数
  22. /// </summary>
  23. public class IDGenerateParm{
  24. /// <summary>
  25. /// 主键基值(新主键在此基础上按规则增加)
  26. /// </summary>
  27. public string BaseValue { get; set; }
  28. /// <summary>
  29. /// 主键长度
  30. /// </summary>
  31. public int IDLength { get; set; }
  32. }
  33. /// <summary>
  34. /// 简单主键生成器
  35. /// </summary>
  36. public class SampleIDGenerator : IIDGenerator
  37. {
  38. /// <summary>
  39. /// 生成新主键
  40. /// </summary>
  41. /// <param name="parm">生成主键参数</param>
  42. /// <returns>生成后新主键</returns>
  43. string IIDGenerator.GeneratNewID(IDGenerateParm parm)
  44. {
  45. var ret = "";
  46. if (StringHelper.IsNullOrEmpty(parm.BaseValue)) parm.BaseValue = "0";
  47. int li_bv;
  48. if (!int.TryParse(parm.BaseValue,out li_bv)) throw new Exception("参数错误,简单生成器仅能生成数字字符串!");
  49. if (parm.IDLength == 0) parm.IDLength = 5;
  50. var li_id=(int)Math.Pow(10, parm.IDLength);
  51. li_id = li_id + li_bv + 1;
  52. return li_id.ToString().Substring(1);
  53. }
  54. }
  55. }