Expression.PropertyOrField(Expression, String) Metod

Definition

Skapar en MemberExpression som representerar åtkomst till en egenskap eller ett fält.

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

Parametrar

expression
Expression

En Expression vars Type innehåller en egenskap eller ett fält med namnet propertyOrFieldName.

propertyOrFieldName
String

Namnet på en egenskap eller ett fält som ska nås.

Returer

En MemberExpression som har NodeType egenskapen lika med MemberAccess, Expression egenskapen inställd på expressionoch Member egenskapen inställd på PropertyInfo eller FieldInfo som representerar egenskapen eller fältet som anges av propertyOrFieldName.

Undantag

expression eller propertyOrFieldName är null.

Ingen egenskap eller fält med namnet propertyOrFieldName har definierats i expression. Typ eller dess bastyper.

Exempel

I följande exempel visas hur du skapar ett uttryck som representerar åtkomst till en egenskap eller ett fält.

// 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

Kommentarer

Egenskapen Type för resultatet MemberExpression är lika med PropertyType egenskaperna PropertyInfoFieldInfoeller FieldType för eller , som representerar egenskapen eller fältet som anges av propertyOrFieldName.

Den här metoden söker i expression. Typ och dess bastyper för en instansegenskap eller ett fält som har namnet propertyOrFieldName. Statiska egenskaper eller fält stöds inte. Offentliga egenskaper och fält ges företräde framför icke-offentliga egenskaper och fält. Dessutom ges egenskaper företräde framför fält. Om en matchande egenskap eller ett matchande fält hittas skickas expression den PropertyInfo här metoden och eller FieldInfo som representerar den egenskapen eller fältet till PropertyFieldrespektive .

Gäller för