Expand Minimize
This topic has not yet been rated - Rate this topic

Expression.PropertyOrField Method

Creates a MemberExpression that represents accessing a property or field.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)
public static MemberExpression PropertyOrField(
	Expression expression,
	string propertyOrFieldName
)

Parameters

expression
Type: System.Linq.Expressions.Expression

An Expression whose Type contains a property or field named propertyOrFieldName. This can be null for static members.

propertyOrFieldName
Type: System.String

The name of a property or 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 PropertyInfo or FieldInfo that represents the property or field denoted by propertyOrFieldName.
ExceptionCondition
ArgumentNullException

expression or propertyOrFieldName is null.

ArgumentException

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

The Type property of the resulting MemberExpression is equal to the PropertyType or FieldType properties of the PropertyInfo or FieldInfo, respectively, that represents the property or field denoted by propertyOrFieldName.

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

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

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

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.