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이고 MemberAccess 속성이 Expression으로 설정되고 expression 속성이 Member이 가리키는 속성 또는 필드를 나타내는 PropertyInfo 또는 FieldInfo로 설정된 propertyOrFieldName입니다.

예외

expression 또는 propertyOrFieldNamenull인 경우

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

설명

결과 MemberExpression 의 속성은 Type 또는 FieldInfoPropertyInfo 또는 FieldType 속성과 같 PropertyType 으며, 각각 으로 표시된 속성 또는 필드를 propertyOrFieldName나타냅니다.

이 메서드는 를 검색expression합니다. 이름이 propertyOrFieldName인 instance 속성 또는 필드에 대한 및 해당 기본 형식을 입력합니다. 정적 속성 또는 필드는 지원되지 않습니다. 공용 속성 및 필드는 공용이 아닌 속성 및 필드에 대한 기본 설정이 제공됩니다. 또한 속성에는 필드보다 기본 설정이 지정됩니다. 일치하는 속성 또는 필드가 발견되면 이 메서드는 해당 속성 또는 필드를 Property 나타내는 및 PropertyInfoFieldInfo 각각 또는 Field에 전달 expression 합니다.

적용 대상