MemberExpression.Expression何时会为null?技术实现疑问
导致MemberExpression.Expression为null的场景
当访问静态成员(静态属性、静态字段、静态事件)时,MemberExpression.Expression会是null。因为静态成员属于类型本身,而非某个实例对象,所以不需要实例表达式来限定访问。
举几个典型例子:
- 访问静态属性:
() => MyStaticClass.MyStaticProperty,解析后的MemberExpression的Expression属性为null - 访问静态字段:
() => MyStaticClass.MyStaticField,对应的Expression同样为null - 访问枚举成员:
() => MyEnum.EnumValue,本质上枚举成员是静态常量,其MemberExpression的Expression也为null
如果你的工具方法只需要处理x => x.PropertyName这类实例成员访问的lambda表达式,那么就需要校验MemberExpression.Expression不能为null,且该表达式必须是ParameterExpression类型(即对应lambda的输入参数)。
内容的提问来源于stack exchange,提问作者Arnon Axelrod
相关产品推荐
相关产品推荐

