Expression.PropertyOrField(Expression, String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建一个表示访问属性或字段的 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
或 propertyOrFieldName
为 null
。
没有在 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
注解
Type生成的 MemberExpression 属性分别等于 PropertyType 或 FieldInfo的 或 FieldType 的 PropertyInfo 或 属性,这些属性表示 由 propertyOrFieldName
表示的属性或字段。
此方法搜索 expression
。名称为 的实例属性或字段的类型 propertyOrFieldName
及其基类型。 不支持静态属性或字段。 公共属性和字段优先于非公共属性和字段。 此外,属性优先于字段。 如果找到匹配的属性或字段,则此方法将 和 FieldInfoPropertyInfo 表示该属性或字段的 和 分别传递给 expression
Property 或 Field。