Expression.PropertyOrField(Expression, String) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří objekt MemberExpression , který představuje přístup k vlastnosti nebo poli.
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
Parametry
- expression
- Expression
Objekt Expression , jehož Type obsahuje vlastnost nebo pole s názvem propertyOrFieldName
.
- propertyOrFieldName
- String
Název vlastnosti nebo pole, ke které se má přistupovat.
Návraty
Vlastnost MemberExpression , která má NodeType vlastnost rovnou MemberAccess, nastavenou Expression na expression
a vlastnost nastavenou Member na PropertyInfoFieldInfo nebo , která představuje vlastnost nebo pole označené hodnotou propertyOrFieldName
.
Výjimky
expression
nebo propertyOrFieldName
je null
.
V nástroji není definována expression
žádná vlastnost nebo pole s názvem propertyOrFieldName
. Typ nebo jeho základní typy.
Příklady
Následující příklad ukazuje, jak vytvořit výraz, který představuje přístup k vlastnosti nebo poli.
// 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
Poznámky
Vlastnost Type výsledného MemberExpression objektu je rovna PropertyType vlastnostem PropertyInfoFieldInfonebo FieldType , která představuje vlastnost nebo pole označené hodnotou propertyOrFieldName
.
Tato metoda prohledá expression
. Typ a jeho základní typy pro vlastnost instance nebo pole s názvem propertyOrFieldName
. Statické vlastnosti nebo pole nejsou podporovány. Veřejné vlastnosti a pole mají přednost před neveřejné vlastnosti a pole. Vlastnosti mají také přednost před poli. Pokud je nalezena odpovídající vlastnost nebo pole, tato metoda předá expression
a PropertyInfo , nebo FieldInfo , který představuje tuto vlastnost nebo pole , Property v Fielduvedeném pořadí.