1. //相当于nameof
    2. public class Nameof<T>
    3. {
    4. public static string Property<TProp>(Expression<Func<T, TProp>> expression)
    5. {
    6. var body = expression.Body as MemberExpression;
    7. if (body == null)
    8. throw new ArgumentException("'expression' should be a member expression");
    9. return body.Member.Name;
    10. }
    11. }

    因为遇到的情况都是针对某一集合进行,主要对lambda表达式进行学习;在其中可能遇到的一些表达式类型
    ConstantExpression: 常量表达式
    ParameterExpression: 参数表达式
    UnaryExpression: 一元运算符表达式
    BinaryExpression: 二元运算符表达式
    TypeBinaryExpression: is运算符表达式
    ConditionalExpression: 条件表达式
    MemberExpression: 访问字段或属性表达式
    MethodCallExpression: 调用成员函数表达式
    Expression: 委托表达式