Share via


Expression.ElementInit Metodo

Definizione

Crea un oggetto ElementInit.

Overload

ElementInit(MethodInfo, IEnumerable<Expression>)

Crea un oggetto ElementInit, dato IEnumerable<T> come secondo argomento.

ElementInit(MethodInfo, Expression[])

Crea un oggetto ElementInit, data una matrice di valori come secondo argomento.

ElementInit(MethodInfo, IEnumerable<Expression>)

Origine:
ElementInit.cs
Origine:
ElementInit.cs
Origine:
ElementInit.cs

Crea un oggetto ElementInit, dato IEnumerable<T> come secondo argomento.

public:
 static System::Linq::Expressions::ElementInit ^ ElementInit(System::Reflection::MethodInfo ^ addMethod, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
static member ElementInit : System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ElementInit
Public Shared Function ElementInit (addMethod As MethodInfo, arguments As IEnumerable(Of Expression)) As ElementInit

Parametri

addMethod
MethodInfo

Oggetto MethodInfo su cui impostare la proprietà AddMethod.

arguments
IEnumerable<Expression>

Oggetto IEnumerable<T> che contiene gli oggetti Expression su cui impostare la proprietà Arguments.

Restituisce

Oggetto ElementInit le cui proprietà AddMethod e Arguments sono impostate sui valori specificati.

Eccezioni

addMethod o arguments è null.

Il metodo rappresentato da addMethod non è denominato "Add" (senza distinzione tra maiuscole e minuscole).

-oppure-

Il metodo rappresentato da addMethod non è un metodo di istanza.

-oppure-

arguments non contiene lo stesso numero di elementi dei parametri del metodo rappresentato da addMethod.

-oppure-

La proprietà Type di uno o più elementi di arguments non può essere assegnata al tipo del parametro corrispondente del metodo rappresentato da addMethod.

Esempio

Nell'esempio seguente viene illustrato come utilizzare il ElementInit(MethodInfo, Expression[]) metodo per creare un ElementInit oggetto che rappresenta la chiamata al Add metodo per inizializzare un elemento di una raccolta dizionario.

string tree = "maple";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create an ElementInit that represents calling
// Dictionary<int, string>.Add(tree.Length, tree).
System.Linq.Expressions.ElementInit elementInit =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree.Length),
        System.Linq.Expressions.Expression.Constant(tree));

Console.WriteLine(elementInit.ToString());

// This code produces the following output:
//
// Void Add(Int32, System.String)(5,"maple")
Dim tree As String = "maple"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create an ElementInit that represents calling
' Dictionary(Of Integer, String).Add(tree.Length, tree).
Dim elementInit As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree.Length), _
        System.Linq.Expressions.Expression.Constant(tree))

Console.WriteLine(elementInit.ToString())

' This code produces the following output:
'
' Void Add(Int32, System.String)(5,"maple")

Commenti

Il addMethod parametro deve rappresentare un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole). Il metodo add deve avere lo stesso numero di parametri del numero di elementi in arguments. La Type proprietà di ogni elemento in arguments deve essere assegnabile al tipo del parametro corrispondente del metodo add, possibilmente dopo l'inserimento tra virgolette.

Nota

Un elemento verrà racchiuso tra virgolette solo se il parametro del metodo corrispondente è di tipo Expression. Virgolette significa che l'elemento viene racchiuso in un Quote nodo. Il nodo risultante è un oggetto UnaryExpression la cui Operand proprietà è l'elemento di arguments.

Si applica a

ElementInit(MethodInfo, Expression[])

Origine:
ElementInit.cs
Origine:
ElementInit.cs
Origine:
ElementInit.cs

Crea un oggetto ElementInit, data una matrice di valori come secondo argomento.

public:
 static System::Linq::Expressions::ElementInit ^ ElementInit(System::Reflection::MethodInfo ^ addMethod, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, params System.Linq.Expressions.Expression[] arguments);
static member ElementInit : System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ElementInit
Public Shared Function ElementInit (addMethod As MethodInfo, ParamArray arguments As Expression()) As ElementInit

Parametri

addMethod
MethodInfo

Oggetto MethodInfo su cui impostare la proprietà AddMethod.

arguments
Expression[]

Matrice di oggetti Expression su cui impostare la proprietà Arguments.

Restituisce

Oggetto ElementInit le cui proprietà AddMethod e Arguments sono impostate sui valori specificati.

Eccezioni

addMethod o arguments è null.

Il metodo che addMethod rappresenta non è denominato "Add" (senza distinzione tra maiuscole e minuscole).

-oppure-

Il metodo che addMethod rappresenta non è un metodo di istanza.

-oppure-

Il numero di elementi in arguments è diverso dal numero di parametri del metodo rappresentato da addMethod.

-oppure-

La proprietà Type di uno o più elementi di arguments non può essere assegnata al tipo del parametro corrispondente del metodo rappresentato da addMethod.

Esempio

Nell'esempio seguente viene illustrato come utilizzare il ElementInit(MethodInfo, Expression[]) metodo per creare un ElementInit oggetto che rappresenta la chiamata al Add metodo per inizializzare un elemento di una raccolta dizionario.

string tree = "maple";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create an ElementInit that represents calling
// Dictionary<int, string>.Add(tree.Length, tree).
System.Linq.Expressions.ElementInit elementInit =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree.Length),
        System.Linq.Expressions.Expression.Constant(tree));

Console.WriteLine(elementInit.ToString());

// This code produces the following output:
//
// Void Add(Int32, System.String)(5,"maple")
Dim tree As String = "maple"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create an ElementInit that represents calling
' Dictionary(Of Integer, String).Add(tree.Length, tree).
Dim elementInit As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree.Length), _
        System.Linq.Expressions.Expression.Constant(tree))

Console.WriteLine(elementInit.ToString())

' This code produces the following output:
'
' Void Add(Int32, System.String)(5,"maple")

Commenti

Il addMethod parametro deve rappresentare un metodo di istanza denominato "Add" (senza distinzione tra maiuscole e minuscole). Il metodo add deve avere lo stesso numero di parametri del numero di elementi in arguments. La Type proprietà di ogni elemento in arguments deve essere assegnabile al tipo del parametro corrispondente del metodo add, possibilmente dopo l'inserimento tra virgolette.

Nota

Un elemento verrà racchiuso tra virgolette solo se il parametro del metodo corrispondente è di tipo Expression. Virgolette significa che l'elemento viene racchiuso in un Quote nodo. Il nodo risultante è un oggetto UnaryExpression la cui Operand proprietà è l'elemento di arguments.

Si applica a