Expression.PropertyOrField 是否可以用于访问静态属性或字段

本文关键字:静态 属性 字段 访问 用于 PropertyOrField 是否 Expression | 更新日期: 2023-09-27 18:22:43

Expression.PropertyOrFieldexpression参数的文档指出,可以为静态成员null它:

一个表达式,其Type包含名为 propertyOrFieldName 的属性或字段。对于静态成员,可以null这样做。
(强调我的(

但是,每当我通过null时,我都会得到一个ArgumentNullException

Expression.PropertyOrField 是否可以用于访问静态属性或字段

此方法的文档是矛盾的:

  • expression参数的文档指出,可以为静态成员null
  • ArgumentNullException的文档指出,如果expression null,则会抛出它

事实是
此方法不能用于获取对静态成员的访问权限,expression参数的文档不正确。
即使提供了具有正确Type的表达式,此方法也不会按预期工作,因为它只查找实例成员。

若要访问静态字段或属性,请改用Expression.MakeMemberAccess