Expression.Property 方法 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建一个表示访问属性的 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.IndexExpressionPublic 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.IndexExpressionPublic 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.IndexExpressionPublic 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.MemberExpressionPublic Shared Function Property (expression As Expression, type As Type, propertyName As String) As MemberExpression参数
- expression
- Expression
属性的包含对象。 对于静态属性,这可以为 null。
- 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.MemberExpressionPublic Shared Function Property (expression As Expression, property As PropertyInfo) As MemberExpression参数
- expression
- Expression
要将 Expression 属性设置为与其相等的 Expression。 对于静态属性,这可以为 null。
- property
- PropertyInfo
要将 PropertyInfo 属性设置为与其相等的 Member。
返回
一个 MemberExpression,其 NodeType 属性等于 MemberAccess,并且其 Expression 和 Member 属性设置为指定值。
例外
              property 为 null。
- 或 -
              property 所表示的属性不为 static(在 Visual Basic 中为 Shared),并且 expression 为 null。
              expression.Type 不能赋给 property 所表示的属性的声明类型。
注解
Type生成的 MemberExpression 的 属性等于 PropertyType 的 Member属性。
如果 由 propertystatic 表示的属性在 Visual Basic) 中 (Shared , expression 则可以是 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.MemberExpressionPublic Shared Function Property (expression As Expression, propertyAccessor As MethodInfo) As MemberExpression参数
- expression
- Expression
要将 Expression 属性设置为与其相等的 Expression。 对于静态属性,这可以为 null。
- propertyAccessor
- MethodInfo
表示属性访问器方法的 MethodInfo。
返回
一个 MemberExpression,其 NodeType 属性等于 MemberAccess,Expression 属性设置为 expression,并且 Member 属性设置为表示在 PropertyInfo 中访问的属性的 propertyAccessor。
例外
              propertyAccessor 为 null。
- 或 -
              propertyAccessor 所表示的方法不为 static(在 Visual Basic 中为 Shared),并且 expression 为 null。
              expression.Type 不可分配给由 propertyAccessor 表示的方法声明类型。
- 或 -
              propertyAccessor 所表示的方法不为属性访问器方法。
注解
Type生成的 MemberExpression 的 属性等于 PropertyType 的 Member属性。
如果 由 propertyAccessorstatic 表示的方法在 Visual Basic) 中 (Shared , expression 则可以为 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.MemberExpressionPublic Shared Function Property (expression As Expression, propertyName As String) As MemberExpression参数
- expression
- Expression
一个 Expression,其 Type 包含一个名为 propertyName 的属性。 对于静态属性,这可以为 null。
- propertyName
- String
要访问的属性的名称。
返回
一个 MemberExpression,其 NodeType 属性等于 MemberAccess,Expression 属性设置为 expression,并且 Member 属性设置为由 PropertyInfo 表示的属性的 propertyName。
例外
              expression 或 propertyName 为 null。
没有在 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及其基类型。 公共属性优先于非公共属性。 如果找到匹配的属性,此方法会将 expression 和 PropertyInfo 表示该属性的 传递给 Property。