Expression.PropertyOrField(Expression, String) 方法

定义

创建一个表示访问属性或字段的 MemberExpression

public:
 static System::Linq::Expressions::MemberExpression ^ PropertyOrField(System::Linq::Expressions::Expression ^ expression, System::String ^ propertyOrFieldName);
public static System.Linq.Expressions.MemberExpression PropertyOrField (System.Linq.Expressions.Expression expression, string propertyOrFieldName);
static member PropertyOrField : System.Linq.Expressions.Expression * string -> System.Linq.Expressions.MemberExpression
Public Shared Function PropertyOrField (expression As Expression, propertyOrFieldName As String) As MemberExpression

参数

expression
Expression

一个 Expression,其 Type 包含一个名为 propertyOrFieldName 的属性或字段。

propertyOrFieldName
String

要访问的属性或字段的名称。

返回

一个 MemberExpression,其 NodeType 属性等于 MemberAccessExpression 属性设置为 expression,并且 Member 属性设置为表示 PropertyInfo 所表示的属性或字段的 FieldInfopropertyOrFieldName

例外

expressionpropertyOrFieldNamenull

没有在 propertyOrFieldName.Type 或其基类型中定义名为 expression 的属性或字段。

示例

以下示例演示如何创建表示访问属性或字段的表达式。

// Add the following directive to your file:
// using System.Linq.Expressions;

class TestClass
{
    public int sample { get; set; }
}

static void TestPropertyOrField()
{
    TestClass obj = new TestClass();
    obj.sample = 40;

    // This expression represents accessing a property or field.
    // For static properties or fields, the first parameter must be null.
    Expression memberExpr = Expression.PropertyOrField(
        Expression.Constant(obj),
        "sample"
    );

    // The following statement first creates an expression tree,
    // then compiles it, and then runs it.
    Console.WriteLine(Expression.Lambda<Func<int>>(memberExpr).Compile()());
}

// This code example produces the following output:
//
// 40
' Add the following directive to your file:
' Imports System.Linq.Expressions  

Class TestClass
    Public Property Sample As Integer
End Class

Sub TestPropertyOrField()

    Dim obj As New TestClass()
    obj.Sample = 40

    ' This expression represents accessing a property or field.
    ' For static properties or fields, the first parameter must be Nothing.
    Dim memberExpr As Expression = Expression.PropertyOrField(
          Expression.Constant(obj),
          "Sample"
      )

    ' The following statement first creates an expression tree,
    ' then compiles it, and then runs it.
    Console.WriteLine(Expression.Lambda(Of Func(Of Integer))(memberExpr).Compile()())
End Sub

' This code example produces the following output:
'
' 40

注解

Type生成的 MemberExpression 属性分别等于 PropertyTypeFieldInfo的 或 FieldTypePropertyInfo 或 属性,这些属性表示 由 propertyOrFieldName表示的属性或字段。

此方法搜索 expression。名称为 的实例属性或字段的类型 propertyOrFieldName及其基类型。 不支持静态属性或字段。 公共属性和字段优先于非公共属性和字段。 此外,属性优先于字段。 如果找到匹配的属性或字段,则此方法将 和 FieldInfoPropertyInfo 表示该属性或字段的 和 分别传递给 expressionPropertyField

适用于