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

ExpressionType という名前のプロパティまたはフィールドが含まれている 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、 または のプロパティFieldInfoPropertyInfoFieldType等しくPropertyType、それぞれ で示されるプロパティまたはフィールドをpropertyOrFieldName表します。

このメソッドは を検索します expression。という名前 propertyOrFieldNameのインスタンス プロパティまたはフィールドの型とその基本型。 静的プロパティまたはフィールドはサポートされていません。 パブリック プロパティとフィールドは、パブリック以外のプロパティとフィールドよりも優先されます。 また、プロパティにはフィールドよりも優先されます。 一致するプロパティまたはフィールドが見つかった場合、このメソッドは、 とFieldInfoPropertyInfo、そのプロパティまたはフィールドを表す または をそれぞれ または FieldPropertyexpressionします。

適用対象