ObjectExtensions.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using XF.Domain.Exceptions;
  8. namespace Hotline.Tools;
  9. public static class ObjectExtensions
  10. {
  11. /// <summary>
  12. /// 扩展方法用于手动验证对象,并返回验证结果。
  13. /// </summary>
  14. /// <param name="obj">需要验证的对象</param>
  15. /// <returns>如果验证成功返回 string.Empty,否则返回错误信息</returns>
  16. public static string ValidateObject(this object obj, bool throwError = true)
  17. {
  18. var validationResults = new List<ValidationResult>();
  19. var validationContext = new ValidationContext(obj);
  20. // 验证对象
  21. bool isValid = Validator.TryValidateObject(obj, validationContext, validationResults, true);
  22. if (isValid)
  23. {
  24. return string.Empty;
  25. }
  26. else
  27. {
  28. var msg = string.Join("; ", validationResults.Select(result => result.ErrorMessage));
  29. if (throwError)
  30. throw UserFriendlyException.SameMessage(msg);
  31. // 如果验证失败,返回所有错误信息的拼接
  32. return msg;
  33. }
  34. }
  35. }