Expression.PropertyOrField可以用来访问静态属性或字段吗?

时间:2013-07-17 12:59:26

标签: c# .net expression

Expression.PropertyOrField expression参数的文档说明静态成员可以是null

  

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

但是,每当我通过null时,我都会获得ArgumentNullException

1 个答案:

答案 0 :(得分:6)

这种方法的文档是矛盾的:

  • expression参数的文档说明静态成员可以是null
  • 如果ArgumentNullExceptionexpression
  • null的文档会说明它被抛出

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

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