首页 > 其他 > 详细

表达式树验证指定对象的属性是否为空

时间:2019-03-12 13:23:35      阅读:156      评论:0      收藏:0      [点我收藏+]
  public static class ExpressionTree
    {
        public static bool PropertiesNotNull<T>(T obj)
        {
            if (obj == null) { return false; }
            var type = obj.GetType();
            var paraExpression = Expression.Parameter(typeof(T), "object");
            object v; bool result = true;
            foreach (var prop in type.GetProperties())
            {
                v = VisitProperty<T>(obj, prop, paraExpression, paraExpression);
                if (v == null) { result = false; break; }
            }
            return result;
        }

        private static object VisitProperty<T>(object obj, PropertyInfo prop, Expression instanceExpression, ParameterExpression parameterExpression)
        {
            MemberExpression memExpression = Expression.Property(instanceExpression, prop);
            Expression objectExpression = Expression.Convert(memExpression, typeof(object));
            Expression<Func<T, object>> lambdaExpression = Expression.Lambda<Func<T, object>>(objectExpression, parameterExpression);
            Func<T, object> func = lambdaExpression.Compile();
            // object v = func((T)obj);
            return func((T)obj);
        }
    }

//调用
Student stu=new Student();
 if (!ExpressionTree.PropertiesNotNull(stu)) { return "请完善信息后提交!"); }

 

表达式树验证指定对象的属性是否为空

原文:https://www.cnblogs.com/cheua/p/10515848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!