25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

86 satır
2.7 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Exceptions;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Linq;
  7. namespace JT808.Protocol.Extensions
  8. {
  9. /// <summary>
  10. /// 验证长度扩展方法
  11. /// </summary>
  12. public static partial class JT808ValidationExtensions
  13. {
  14. /// <summary>
  15. /// 验证字符串长度
  16. /// </summary>
  17. /// <param name="value"></param>
  18. /// <param name="fieldName"></param>
  19. /// <param name="fixedLength"></param>
  20. public static string ValiString(this string value,in string fieldName, in int fixedLength)
  21. {
  22. vali(value.Length, fieldName, fixedLength);
  23. return value;
  24. }
  25. /// <summary>
  26. /// 验证字符串最大长度
  27. /// </summary>
  28. /// <param name="value"></param>
  29. /// <param name="fieldName"></param>
  30. /// <param name="maxLength"></param>
  31. public static string ValiMaxString(this string value, in string fieldName, in int maxLength)
  32. {
  33. if (length > maxLength)
  34. {
  35. throw new JT808Exception(JT808ErrorCode.VailLength, $"{fieldName}:{length}>max length[{maxLength}]");
  36. }
  37. return value;
  38. }
  39. /// <summary>
  40. /// 验证数组长度
  41. /// </summary>
  42. /// <param name="value"></param>
  43. /// <param name="fieldName"></param>
  44. /// <param name="fixedLength"></param>
  45. public static byte[] ValiBytes(this byte[] value,in string fieldName, in int fixedLength)
  46. {
  47. vali(value.Length, fieldName, fixedLength);
  48. return value;
  49. }
  50. /// <summary>
  51. /// 验证集合长度
  52. /// </summary>
  53. /// <param name="value"></param>
  54. /// <param name="fieldName"></param>
  55. /// <param name="fixedLength"></param>
  56. public static IEnumerable<T> ValiList<T>(this IEnumerable<T> value, in string fieldName, in int fixedLength)
  57. {
  58. vali(value.Count(), fieldName, fixedLength);
  59. return value;
  60. }
  61. /// <summary>
  62. /// 验证
  63. /// </summary>
  64. /// <param name="length"></param>
  65. /// <param name="fieldName"></param>
  66. /// <param name="fixedLength"></param>
  67. private static void vali(in int length,in string fieldName, in int fixedLength)
  68. {
  69. if (length > fixedLength)
  70. {
  71. throw new JT808Exception(JT808ErrorCode.VailLength, $"{fieldName}:{length}>fixed[{fixedLength}]");
  72. }
  73. else if (length < fixedLength)
  74. {
  75. throw new JT808Exception(JT808ErrorCode.NotEnoughLength, $"{fieldName}:{length}<fixed[{fixedLength}]");
  76. }
  77. }
  78. }
  79. }