wcs_server_kate_suzhou/Tools/DataCheck/CheckData.cs

55 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Text.RegularExpressions;
namespace DataCheck;
/*
* 作者icewint
*
*/
/// <summary>
/// 数据校验类
/// </summary>
public class CheckData
{
/// <summary>
/// 校验是否满足设定的规则,需要添加 <see cref="DataRulesAttribute"/> 特性
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static bool CheckDataRules<T>(T data) where T : class
{
Type type = typeof(T);
var properties = type.GetProperties();
foreach (var property in properties)
{
string? proValue = property.GetValue(data)?.ToString();
var attributes = property.GetCustomAttributes(false);
foreach (var attribute in attributes)
{
if (attribute is DataRulesAttribute dataRules)
{
// 判断是否允许为 NULL
if (!dataRules.AllowNull && proValue == null)
{
// 如果不允许为 null 但是为 null 了就返回错误
return false;
}
// 下面是允许为 null 的情况
if (proValue == null)
{
// 允许 null 并且为 null 满足要求
continue;
}
if (!Regex.IsMatch(proValue, dataRules.RegexRule))
{
// 允许为 null 但不是 null 且不满足数据要求
return false;
}
}
}
}
return true;
}
}