Partager via


Expression.PropertyOrField(Expression, String) Méthode

Définition

Crée un MemberExpression qui représente l'accès à une propriété ou un champ.

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

Paramètres

expression
Expression

Expression dont Type contient une propriété ou un champ nommé propertyOrFieldName.

propertyOrFieldName
String

Nom d'une propriété ou d'un champ auquel accéder.

Retours

MemberExpression dont la propriété NodeType est égale à MemberAccess, la propriété Expression est égale à expression, et la propriété Member est égale à PropertyInfo ou à FieldInfo qui représente la propriété ou le champ désigné par propertyOrFieldName.

Exceptions

expression ou propertyOrFieldName est null.

Aucune propriété ou aucun champ nommé propertyOrFieldName n'est défini dans expression.Type ou ses types de base.

Exemples

L’exemple suivant montre comment créer une expression qui représente l’accès à une propriété ou à un champ.

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

Remarques

La Type propriété du résultat MemberExpression est égale aux PropertyType propriétés ou FieldType de ou PropertyInfoFieldInfo, respectivement, qui représente la propriété ou le champ désigné par propertyOrFieldName.

Cette méthode recherche expression. Type et ses types de base pour une propriété ou un champ instance qui porte le nom propertyOrFieldName. Les propriétés ou champs statiques ne sont pas pris en charge. Les propriétés et les champs publics sont prioritaires par rapport aux propriétés et aux champs non publics. En outre, les propriétés sont prioritaires par rapport aux champs. Si une propriété ou un champ correspondant est trouvé, cette méthode transmet expression et PropertyInfo ou FieldInfo qui représente cette propriété ou ce champ à Property ou Field, respectivement.

S’applique à