Files
tnb.server/common/Tnb.Common/Utils/ParameterCheckHelper.cs
2023-11-06 19:35:59 +08:00

53 lines
1.7 KiB
C#

namespace Tnb.Common.Utils
{
public class PropertyNotNullChecker<T>
{
private static readonly Dictionary<Type, Func<T, bool>> Cache = new Dictionary<Type, Func<T, bool>>();
public static bool CheckAllPropertiesNotNull(T obj)
{
//Type type = typeof(T);
//// 检查缓存中是否存在类型的检查方法
//if (Cache.TryGetValue(type, out var checkFunc))
//{
// return checkFunc(obj);
//}
//var properties = type.GetProperties();
//// 创建表达式树的参数
//var objParam = Expression.Parameter(type, "obj");
//var propertyNotNullExpressions = new List<Expression>();
//foreach (var property in properties)
//{
// // 创建访问属性的表达式
// var propertyAccess = Expression.Property(objParam, property);
// // 创建检查属性非空的表达式
// var notNullExpression = Expression.NotEqual(propertyAccess, Expression.Constant(null));
// propertyNotNullExpressions.Add(notNullExpression);
//}
//// 创建所有属性非空的表达式
//var allPropertiesNotNullExpression = Expression.AndAlso(propertyNotNullExpressions);
//// 创建Lambda表达式
//var lambda = Expression.Lambda<Func<T, bool>>(allPropertiesNotNullExpression, objParam);
//// 编译表达式并执行
//var func = lambda.Compile();
//// 将类型和检查方法添加到缓存中
//Cache[type] = func;
//return func(obj);
return false;
}
}
}