using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XF.Domain.Exceptions;
namespace Hotline.Tools;
public static class ObjectExtensions
{
///
/// 扩展方法用于手动验证对象,并返回验证结果。
///
/// 需要验证的对象
/// 如果验证成功返回 string.Empty,否则返回错误信息
public static string ValidateObject(this object obj, bool throwError = true)
{
var validationResults = new List();
var validationContext = new ValidationContext(obj);
// 验证对象
bool isValid = Validator.TryValidateObject(obj, validationContext, validationResults, true);
if (isValid)
{
return string.Empty;
}
else
{
var msg = string.Join("; ", validationResults.Select(result => result.ErrorMessage));
if (throwError)
throw UserFriendlyException.SameMessage(msg);
// 如果验证失败,返回所有错误信息的拼接
return msg;
}
}
}