Condividi tramite


MemberInitExpression Classe

Definizione

Rappresenta la chiamata a un costruttore e l'inizializzazione di uno o più membri del nuovo oggetto.

public ref class MemberInitExpression sealed : System::Linq::Expressions::Expression
public sealed class MemberInitExpression : System.Linq.Expressions.Expression
type MemberInitExpression = class
    inherit Expression
Public NotInheritable Class MemberInitExpression
Inherits Expression
Ereditarietà
MemberInitExpression

Esempio

Nell'esempio seguente viene creato un oggetto MemberInitExpression che rappresenta l'inizializzazione di due membri di un nuovo oggetto .

class Animal
{
    public string Species {get; set;}
    public int Age {get; set;}
}

public static void CreateMemberInitExpression()
{
    System.Linq.Expressions.NewExpression newAnimal =
        System.Linq.Expressions.Expression.New(typeof(Animal));

    System.Reflection.MemberInfo speciesMember =
        typeof(Animal).GetMember("Species")[0];
    System.Reflection.MemberInfo ageMember =
        typeof(Animal).GetMember("Age")[0];

    // Create a MemberBinding object for each member
    // that you want to initialize.
    System.Linq.Expressions.MemberBinding speciesMemberBinding =
        System.Linq.Expressions.Expression.Bind(
            speciesMember,
            System.Linq.Expressions.Expression.Constant("horse"));
    System.Linq.Expressions.MemberBinding ageMemberBinding =
        System.Linq.Expressions.Expression.Bind(
            ageMember,
            System.Linq.Expressions.Expression.Constant(12));

    // Create a MemberInitExpression that represents initializing
    // two members of the 'Animal' class.
    System.Linq.Expressions.MemberInitExpression memberInitExpression =
        System.Linq.Expressions.Expression.MemberInit(
            newAnimal,
            speciesMemberBinding,
            ageMemberBinding);

    Console.WriteLine(memberInitExpression.ToString());

    // This code produces the following output:
    //
    // new Animal() {Species = "horse", Age = 12}
}
Class Animal
    Public Species As String
    Public Age As Integer
End Class

Shared Sub CreateMemberInitExpression()
    Dim newAnimal As System.Linq.Expressions.NewExpression = _
        System.Linq.Expressions.Expression.[New](Type.GetType("ExpressionVB.MemberInitExample+Animal"))

    Dim speciesMember As System.Reflection.MemberInfo = _
        Type.GetType("ExpressionVB.MemberInitExample+Animal").GetMember("Species")(0)
    Dim ageMember As System.Reflection.MemberInfo = _
        Type.GetType("ExpressionVB.MemberInitExample+Animal").GetMember("Age")(0)

    ' Create a MemberBinding object for each member
    ' that you want to initialize.
    Dim speciesMemberBinding As System.Linq.Expressions.MemberBinding = _
        System.Linq.Expressions.Expression.Bind( _
            speciesMember, _
            System.Linq.Expressions.Expression.Constant("horse"))
    Dim ageMemberBinding As System.Linq.Expressions.MemberBinding = _
        System.Linq.Expressions.Expression.Bind( _
            ageMember, _
            System.Linq.Expressions.Expression.Constant(12))

    ' Create a MemberInitExpression that represents initializing
    ' two members of the 'Animal' class.
    Dim memberInitExpression As System.Linq.Expressions.MemberInitExpression = _
        System.Linq.Expressions.Expression.MemberInit( _
            newAnimal, _
            speciesMemberBinding, _
            ageMemberBinding)

    Console.WriteLine(memberInitExpression.ToString())

    ' This code produces the following output:
    '
    ' new Animal() {Species = "horse", Age = 12}
End Sub

Commenti

Usare i metodi factory MemberInit per creare un oggetto MemberInitExpression.

Il valore della NodeType proprietà di un MemberInitExpression oggetto è MemberInit.

Proprietà

Nome Descrizione
Bindings

Ottiene le associazioni che descrivono come inizializzare i membri dell'oggetto appena creato.

CanReduce

Ottiene un valore che indica se il nodo dell'albero delle espressioni può essere ridotto.

NewExpression

Ottiene l'espressione che rappresenta la chiamata al costruttore.

NodeType

Restituisce il tipo di nodo di questa espressione. I nodi di estensione devono restituire Extension quando si esegue l'override di questo metodo.

NodeType

Ottiene il tipo di nodo dell'oggetto Expression.

(Ereditato da Expression)
Type

Ottiene il tipo statico dell'espressione rappresentata da .Expression

Type

Ottiene il tipo statico dell'espressione rappresentata da .Expression

(Ereditato da Expression)

Metodi

Nome Descrizione
Accept(ExpressionVisitor)

Invia al metodo visit specifico per questo tipo di nodo. Ad esempio, MethodCallExpression chiama .VisitMethodCall(MethodCallExpression)

(Ereditato da Expression)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Reduce()

Riduce l'oggetto a un'espressione MemberInitExpression più semplice.

ReduceAndCheck()

Riduce questo nodo a un'espressione più semplice. Se CanReduce restituisce true, verrà restituita un'espressione valida. Questo metodo può restituire un altro nodo che deve essere ridotto.

(Ereditato da Expression)
ReduceExtensions()

Riduce l'espressione a un tipo di nodo noto (che non è un nodo di estensione) o restituisce semplicemente l'espressione se è già un tipo noto.

(Ereditato da Expression)
ToString()

Restituisce una rappresentazione testuale dell'oggetto Expression.

(Ereditato da Expression)
Update(NewExpression, IEnumerable<MemberBinding>)

Crea una nuova espressione simile a questa, ma utilizzando gli elementi figlio forniti. Se tutti gli elementi figlio sono uguali, restituirà questa espressione.

VisitChildren(ExpressionVisitor)

Riduce il nodo e quindi chiama il delegato visitor nell'espressione ridotta. Il metodo genera un'eccezione se il nodo non è reducibile.

(Ereditato da Expression)

Si applica a