Freigeben über


Expression.Field Method (Expression, String)

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Creates a MemberExpression that represents accessing a field given the name of the field.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

Syntax

'Declaration
Public Shared Function Field ( _
    expression As Expression, _
    fieldName As String _
) As MemberExpression
public static MemberExpression Field(
    Expression expression,
    string fieldName
)

Parameters

  • fieldName
    Type: System.String
    The name of a field to be accessed.

Return Value

Type: System.Linq.Expressions.MemberExpression
A MemberExpression that has the NodeType property equal to MemberAccess, the Expression property set to expression, and the Member property set to the FieldInfo that represents the field denoted by fieldName.

Exceptions

Exception Condition
ArgumentNullException

expression or fieldName is nulla null reference (Nothing in Visual Basic).

ArgumentException

No field named fieldName is defined in expression.Type or its base types.

Remarks

The Type property of the resulting MemberExpression is equal to the FieldType property of the FieldInfo that represents the field denoted by fieldName.

This method searches expression.Type and its base types for a field that has the name fieldName. Public fields are given preference over non-public fields. If a matching field is found, this method passes expression and the FieldInfo that represents that field to Field.

Examples

The following code example shows how to create an expression that represents accessing a field.

' Add the following directive to your file:
' Imports System.Linq.Expressions

Class TestFieldClass
    Dim sample As Integer = 40
End Class

Sub TestField()

    Dim obj As New TestFieldClass()

    ' This expression represents accessing a field.
    ' For static fields, the first parameter must be Nothing.
    Dim fieldExpr As Expression = Expression.Field(
          Expression.Constant(obj),
          "sample"
      )

    ' The following statement first creates an expression tree,
    ' then compiles it, and then runs it.
    outputBlock.Text &= Expression.Lambda(Of Func(Of Integer))(fieldExpr).Compile()() & vbCrLf
End Sub

' This code example produces the following output:
'
' 40
// Add the following directive to your file:
// using System.Linq.Expressions;  

class TestFieldClass
{
   int sample = 40;
}

static void TestField(System.Windows.Controls.TextBlock outputBlock)
{
   TestFieldClass obj = new TestFieldClass();

   // This expression represents accessing a field.
   // For static fields, the first parameter must be null.
   Expression fieldExpr = Expression.Field(
       Expression.Constant(obj),
       "sample"
   );

   // The following statement first creates an expression tree,
   // then compiles it, and then runs it.
   outputBlock.Text += Expression.Lambda<Func<int>>(fieldExpr).Compile()() + "\n";
}

// This code example produces the following output:
//
// 40

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.