Expression.Property 方法

定义

创建一个表示访问属性的 MemberExpression

重载

Property(Expression, String, Expression[])

创建一个 IndexExpression,它表示对索引属性的访问。

Property(Expression, PropertyInfo, Expression[])

创建一个 IndexExpression,它表示对索引属性的访问。

Property(Expression, PropertyInfo, IEnumerable<Expression>)

创建一个 IndexExpression,它表示对索引属性的访问。

Property(Expression, Type, String)

创建一个访问属性的 MemberExpression

Property(Expression, PropertyInfo)

创建一个表示访问属性的 MemberExpression

Property(Expression, MethodInfo)

使用属性访问器方法创建一个表示访问属性的 MemberExpression

Property(Expression, String)

创建一个表示访问属性的 MemberExpression

Property(Expression, String, Expression[])

Source:
IndexExpression.cs
Source:
IndexExpression.cs
Source:
IndexExpression.cs

创建一个 IndexExpression,它表示对索引属性的访问。

public:
 static System::Linq::Expressions::IndexExpression ^ Property(System::Linq::Expressions::Expression ^ instance, System::String ^ propertyName, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression instance, string propertyName, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression instance, string propertyName, params System.Linq.Expressions.Expression[]? arguments);
static member Property : System.Linq.Expressions.Expression * string * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.IndexExpression
Public Shared Function Property (instance As Expression, propertyName As String, ParamArray arguments As Expression()) As IndexExpression

参数

instance
Expression

属性所属的对象。 如果该属性为 static/shared,则此对象必须为 null。

propertyName
String

索引器的名称。

arguments
Expression[]

用于为属性编制索引的 Expression 对象的数组。

返回

创建的 IndexExpression

适用于

Property(Expression, PropertyInfo, Expression[])

Source:
IndexExpression.cs
Source:
IndexExpression.cs
Source:
IndexExpression.cs

创建一个 IndexExpression,它表示对索引属性的访问。

public:
 static System::Linq::Expressions::IndexExpression ^ Property(System::Linq::Expressions::Expression ^ instance, System::Reflection::PropertyInfo ^ indexer, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression instance, System.Reflection.PropertyInfo indexer, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression? instance, System.Reflection.PropertyInfo indexer, params System.Linq.Expressions.Expression[]? arguments);
static member Property : System.Linq.Expressions.Expression * System.Reflection.PropertyInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.IndexExpression
Public Shared Function Property (instance As Expression, indexer As PropertyInfo, ParamArray arguments As Expression()) As IndexExpression

参数

instance
Expression

属性所属的对象。 如果该属性为 static/shared,则此对象必须为 null。

indexer
PropertyInfo

表示要编制索引的属性的 PropertyInfo

arguments
Expression[]

用于为属性编制索引的 Expression 对象的数组。

返回

创建的 IndexExpression

适用于

Property(Expression, PropertyInfo, IEnumerable<Expression>)

Source:
IndexExpression.cs
Source:
IndexExpression.cs
Source:
IndexExpression.cs

创建一个 IndexExpression,它表示对索引属性的访问。

public:
 static System::Linq::Expressions::IndexExpression ^ Property(System::Linq::Expressions::Expression ^ instance, System::Reflection::PropertyInfo ^ indexer, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression instance, System.Reflection.PropertyInfo indexer, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
public static System.Linq.Expressions.IndexExpression Property (System.Linq.Expressions.Expression? instance, System.Reflection.PropertyInfo indexer, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);
static member Property : System.Linq.Expressions.Expression * System.Reflection.PropertyInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.IndexExpression
Public Shared Function Property (instance As Expression, indexer As PropertyInfo, arguments As IEnumerable(Of Expression)) As IndexExpression

参数

instance
Expression

属性所属的对象。 如果该属性为 static/shared,则此对象必须为 null。

indexer
PropertyInfo

表示要编制索引的属性的 PropertyInfo

arguments
IEnumerable<Expression>

用于为属性编制索引的 IEnumerable<T> 对象的 Expression

返回

创建的 IndexExpression

适用于

Property(Expression, Type, String)

Source:
MemberExpression.cs
Source:
MemberExpression.cs
Source:
MemberExpression.cs

创建一个访问属性的 MemberExpression

public:
 static System::Linq::Expressions::MemberExpression ^ Property(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::String ^ propertyName);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression expression, Type type, string propertyName);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression? expression, Type type, string propertyName);
static member Property : System.Linq.Expressions.Expression * Type * string -> System.Linq.Expressions.MemberExpression
Public Shared Function Property (expression As Expression, type As Type, propertyName As String) As MemberExpression

参数

expression
Expression

属性的包含对象。 对于静态属性,这可以为 null。

type
Type

包含属性的 Type

propertyName
String

要访问的属性。

返回

创建的 MemberExpression

适用于

Property(Expression, PropertyInfo)

Source:
MemberExpression.cs
Source:
MemberExpression.cs
Source:
MemberExpression.cs

创建一个表示访问属性的 MemberExpression

public:
 static System::Linq::Expressions::MemberExpression ^ Property(System::Linq::Expressions::Expression ^ expression, System::Reflection::PropertyInfo ^ property);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression expression, System.Reflection.PropertyInfo property);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression? expression, System.Reflection.PropertyInfo property);
static member Property : System.Linq.Expressions.Expression * System.Reflection.PropertyInfo -> System.Linq.Expressions.MemberExpression
Public Shared Function Property (expression As Expression, property As PropertyInfo) As MemberExpression

参数

expression
Expression

要将 Expression 属性设置为与其相等的 Expression。 对于静态属性,这可以为 null。

property
PropertyInfo

要将 PropertyInfo 属性设置为与其相等的 Member

返回

一个 MemberExpression,其 NodeType 属性等于 MemberAccess,并且其 ExpressionMember 属性设置为指定值。

例外

propertynull

- 或 -

property 所表示的属性不为 static(在 Visual Basic 中为 Shared),并且 expressionnull

expression.Type 不能赋给 property 所表示的属性的声明类型。

注解

Type生成的 MemberExpression 的 属性等于 PropertyTypeMember属性。

如果 由 propertystatic 表示的属性在 Visual Basic) 中 (Sharedexpression 则可以是 null

适用于

Property(Expression, MethodInfo)

Source:
MemberExpression.cs
Source:
MemberExpression.cs
Source:
MemberExpression.cs

使用属性访问器方法创建一个表示访问属性的 MemberExpression

public:
 static System::Linq::Expressions::MemberExpression ^ Property(System::Linq::Expressions::Expression ^ expression, System::Reflection::MethodInfo ^ propertyAccessor);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression expression, System.Reflection.MethodInfo propertyAccessor);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression? expression, System.Reflection.MethodInfo propertyAccessor);
static member Property : System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.MemberExpression
Public Shared Function Property (expression As Expression, propertyAccessor As MethodInfo) As MemberExpression

参数

expression
Expression

要将 Expression 属性设置为与其相等的 Expression。 对于静态属性,这可以为 null。

propertyAccessor
MethodInfo

表示属性访问器方法的 MethodInfo

返回

一个 MemberExpression,其 NodeType 属性等于 MemberAccessExpression 属性设置为 expression,并且 Member 属性设置为表示在 PropertyInfo 中访问的属性的 propertyAccessor

例外

propertyAccessornull

- 或 -

propertyAccessor 所表示的方法不为 static(在 Visual Basic 中为 Shared),并且 expressionnull

expression.Type 不可分配给由 propertyAccessor 表示的方法声明类型。

- 或 -

propertyAccessor 所表示的方法不为属性访问器方法。

注解

Type生成的 MemberExpression 的 属性等于 PropertyTypeMember属性。

如果 由 propertyAccessorstatic 表示的方法在 Visual Basic) 中 (Sharedexpression 则可以为 null

适用于

Property(Expression, String)

Source:
MemberExpression.cs
Source:
MemberExpression.cs
Source:
MemberExpression.cs

创建一个表示访问属性的 MemberExpression

public:
 static System::Linq::Expressions::MemberExpression ^ Property(System::Linq::Expressions::Expression ^ expression, System::String ^ propertyName);
public static System.Linq.Expressions.MemberExpression Property (System.Linq.Expressions.Expression expression, string propertyName);
static member Property : System.Linq.Expressions.Expression * string -> System.Linq.Expressions.MemberExpression
Public Shared Function Property (expression As Expression, propertyName As String) As MemberExpression

参数

expression
Expression

一个 Expression,其 Type 包含一个名为 propertyName 的属性。 对于静态属性,这可以为 null

propertyName
String

要访问的属性的名称。

返回

一个 MemberExpression,其 NodeType 属性等于 MemberAccessExpression 属性设置为 expression,并且 Member 属性设置为由 PropertyInfo 表示的属性的 propertyName

例外

expressionpropertyNamenull

没有在 propertyName.Type 或其基类型中定义名为 expression 的属性。

示例

以下示例演示如何创建表示访问属性的表达式。

// Add the following directive to your file:
// using System.Linq.Expressions;

 class TestPropertyClass
 {
     public int sample {get; set;}
 }

 static void TestProperty()
 {
     TestPropertyClass obj = new TestPropertyClass();
     obj.sample = 40;

     // This expression represents accessing a property.
     // For static fields, the first parameter must be null.
     Expression propertyExpr = Expression.Property(
         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>>(propertyExpr).Compile()());
 }

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

Class TestPropertyClass
    Public Property Sample As Integer
End Class

Sub TestProperty()

    Dim obj As New TestPropertyClass()
    obj.Sample = 40

    ' This expression represents accessing a property.
    ' For static properties, the first parameter must be Nothing.
    Dim propertyExpr As Expression = Expression.Property(
          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))(propertyExpr).Compile()())
End Sub

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

注解

Type生成的 MemberExpression 的 属性等于 PropertyType 的 属性PropertyInfo,该属性表示 由 propertyName表示的属性。

此方法搜索 expression。名称为 的属性的类型 propertyName及其基类型。 公共属性优先于非公共属性。 如果找到匹配的属性,此方法会将 expressionPropertyInfo 表示该属性的 传递给 Property

适用于