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