Freigeben über


Expression.PropertyOrField(Expression, String) Methode

Definition

Erstellt eine MemberExpression, die den Zugriff auf eine Eigenschaft oder ein Feld darstellt.

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

Parameter

expression
Expression

Eine Expression, deren Type eine Eigenschaft oder ein Feld namens propertyOrFieldName enthält.

propertyOrFieldName
String

Der Name einer Eigenschaft oder eines Felds, auf die bzw. das zugegriffen werden soll.

Gibt zurück

Eine MemberExpression, bei der die NodeType-Eigenschaft gleich MemberAccess ist, die Expression-Eigenschaft auf expression festgelegt ist und die Member-Eigenschaft auf die PropertyInfo oder FieldInfo festgelegt ist, die die durch propertyOrFieldName angegebene Eigenschaft bzw. das Feld darstellt.

Ausnahmen

expression oder propertyOrFieldName ist null.

In propertyOrFieldName.Type oder seinen Basistypen ist keine Eigenschaft bzw. kein Feld mit dem Namen expression definiert.

Beispiele

Das folgende Beispiel zeigt, wie Sie einen Ausdruck erstellen, der den Zugriff auf eine Eigenschaft oder ein Feld darstellt.

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

Hinweise

Die Type -Eigenschaft des resultierenden MemberExpression ist gleich den PropertyType -Eigenschaften oder FieldType -Eigenschaften von PropertyInfo oder FieldInfobzw. , die die Eigenschaft oder das Feld darstellt, die durch bezeichnet werden propertyOrFieldName.

Diese Methode durchsucht expression. Geben Sie und die zugehörigen Basistypen für eine instance Eigenschaft oder ein Feld ein, das den Namen propertyOrFieldNamehat. Statische Eigenschaften oder Felder werden nicht unterstützt. Öffentliche Eigenschaften und Felder werden gegenüber nicht öffentlichen Eigenschaften und Feldern bevorzugt. Außerdem werden Eigenschaften gegenüber Feldern bevorzugt. Wenn eine übereinstimmende Eigenschaft oder Feld gefunden wird, wird diese Methode übergibt expression und PropertyInfo oder FieldInfo , das darstellt, Eigenschaft oder ein Feld an Property oder Fieldbzw.

Gilt für: