Expression.ElementInit Método

Definição

Cria um ElementInit.

Sobrecargas

ElementInit(MethodInfo, IEnumerable<Expression>)

Cria uma ElementInit, dado um IEnumerable<T> como o segundo argumento.

ElementInit(MethodInfo, Expression[])

Cria uma ElementInit, dada uma matriz de valores como o segundo argumento.

ElementInit(MethodInfo, IEnumerable<Expression>)

Cria uma ElementInit, dado um IEnumerable<T> como o segundo argumento.

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

Parâmetros

addMethod
MethodInfo

Um MethodInfo para definir a propriedade AddMethod igual a ele.

arguments
IEnumerable<Expression>

Um IEnumerable<T> que contém objetos Expression igual aos quais definir a propriedade Arguments.

Retornos

ElementInit

Um ElementInit que tem as propriedades AddMethod e Arguments definidas para os valores especificados.

Exceções

addMethod ou arguments é null.

O método representado por addMethod não é nomeado "Add" (não diferencia maiúsculas de minúsculas).

- ou - O método representado por addMethod não é um método de instância.

- ou - arguments não contém o mesmo número de elementos que o número de parâmetros para o método representado por addMethod.

- ou - A propriedade Type de um ou mais elementos de arguments não pode ser atribuída ao tipo do parâmetro correspondente do método representado por addMethod.

Exemplos

O exemplo a seguir demonstra como usar o ElementInit(MethodInfo, Expression[]) método para criar um ElementInit que representa chamar o Add método para inicializar um elemento de uma coleção de dicionários.

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")

Comentários

O addMethod parâmetro deve representar um método de instância chamado "Add" (diferencia maiúsculas de minúsculas). O método add deve ter o mesmo número de parâmetros que o número de elementos em arguments. A Type propriedade de cada elemento deve arguments ser atribuível ao tipo do parâmetro correspondente do método add, possivelmente após aspas.

Observação

Um elemento será citado somente se o parâmetro de método correspondente for do tipo Expression. Aspas significam que o elemento é encapsulado em um Quote nó. O nó resultante é uma UnaryExpression propriedade cuja Operand propriedade é o elemento de arguments.

Aplica-se a

ElementInit(MethodInfo, Expression[])

Cria uma ElementInit, dada uma matriz de valores como o segundo argumento.

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

Parâmetros

addMethod
MethodInfo

Um MethodInfo para definir a propriedade AddMethod igual a ele.

arguments
Expression[]

Uma matriz de objetos Expression igual aos quais definir a propriedade Arguments.

Retornos

ElementInit

Um ElementInit que tem as propriedades AddMethod e Arguments definidas para os valores especificados.

Exceções

addMethod ou arguments é null.

O método representado por addMethod não é nomeado "Add" (não diferencia maiúsculas de minúsculas).

- ou - O método representado por addMethod não é um método de instância.

- ou - arguments não contém o mesmo número de elementos que o número de parâmetros para o método representado por addMethod.

- ou - A propriedade Type de um ou mais elementos de arguments não pode ser atribuída ao tipo do parâmetro correspondente do método representado por addMethod.

Exemplos

O exemplo a seguir demonstra como usar o ElementInit(MethodInfo, Expression[]) método para criar um ElementInit que representa chamar o Add método para inicializar um elemento de uma coleção de dicionários.

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")

Comentários

O addMethod parâmetro deve representar um método de instância chamado "Add" (diferencia maiúsculas de minúsculas). O método add deve ter o mesmo número de parâmetros que o número de elementos em arguments. A Type propriedade de cada elemento deve arguments ser atribuível ao tipo do parâmetro correspondente do método add, possivelmente após aspas.

Observação

Um elemento será citado somente se o parâmetro de método correspondente for do tipo Expression. Aspas significam que o elemento é encapsulado em um Quote nó. O nó resultante é uma UnaryExpression propriedade cuja Operand propriedade é o elemento de arguments.

Aplica-se a