Partilhar via


Expression.ListInit Método

Definição

Sobrecargas

ListInit(NewExpression, IEnumerable<ElementInit>)

Cria um ListInitExpression que usa objetos ElementInit especificados para inicializar uma coleção.

ListInit(NewExpression, IEnumerable<Expression>)

Cria um ListInitExpression que usa um método chamado "Add" para adicionar elementos a uma coleção.

ListInit(NewExpression, ElementInit[])

Cria um ListInitExpression que usa objetos ElementInit especificados para inicializar uma coleção.

ListInit(NewExpression, Expression[])

Cria um ListInitExpression que usa um método chamado "Add" para adicionar elementos a uma coleção.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Cria um ListInitExpression que usa um método especificado para adicionar elementos a uma coleção.

ListInit(NewExpression, MethodInfo, Expression[])

Cria um ListInitExpression que usa um método especificado para adicionar elementos a uma coleção.

ListInit(NewExpression, IEnumerable<ElementInit>)

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa objetos ElementInit especificados para inicializar uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ElementInit ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ElementInit> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * seq<System.Linq.Expressions.ElementInit> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, initializers As IEnumerable(Of ElementInit)) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

initializers
IEnumerable<ElementInit>

Um IEnumerable<T> que contém objetos ElementInit a serem usados para preencher a coleção de Initializers.

Retornos

Um ListInitExpression que tem a propriedade NodeType igual a ListInit e as propriedades NewExpression e Initializers definidas com os valores especificados.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

Exemplos

O exemplo a seguir demonstra como usar o ListInit(NewExpression, ElementInit[]) método para criar um ListInitExpression que representa a inicialização de uma nova instância de dicionário com dois pares chave-valor.

string tree1 = "maple";
string tree2 = "oak";

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

// Create two ElementInit objects that represent the
// two key-value pairs to add to the Dictionary.
System.Linq.Expressions.ElementInit elementInit1 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree1.Length),
        System.Linq.Expressions.Expression.Constant(tree1));
System.Linq.Expressions.ElementInit elementInit2 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree2.Length),
        System.Linq.Expressions.Expression.Constant(tree2));

// Create a NewExpression that represents constructing
// a new instance of Dictionary<int, string>.
System.Linq.Expressions.NewExpression newDictionaryExpression =
    System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>));

// Create a ListInitExpression that represents initializing
// a new Dictionary<> instance with two key-value pairs.
System.Linq.Expressions.ListInitExpression listInitExpression =
    System.Linq.Expressions.Expression.ListInit(
        newDictionaryExpression,
        elementInit1,
        elementInit2);

Console.WriteLine(listInitExpression.ToString());

// This code produces the following output:
//
// new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
// Void Add(Int32, System.String)(3,"oak")}
Dim tree1 As String = "maple"
Dim tree2 As String = "oak"

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

' Create two ElementInit objects that represent the
' two key-value pairs to add to the Dictionary.
Dim elementInit1 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree1.Length), _
        System.Linq.Expressions.Expression.Constant(tree1))
Dim elementInit2 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree2.Length), _
        System.Linq.Expressions.Expression.Constant(tree2))

' Create a NewExpression that represents constructing
' a new instance of Dictionary(Of Integer, String).
Dim newDictionaryExpression As System.Linq.Expressions.NewExpression = _
    System.Linq.Expressions.Expression.[New](Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]"))

' Create a ListInitExpression that represents initializing
' a new Dictionary(Of T) instance with two key-value pairs.
Dim listInitExpression As System.Linq.Expressions.ListInitExpression = _
    System.Linq.Expressions.Expression.ListInit( _
        newDictionaryExpression, _
        elementInit1, _
        elementInit2)

Console.WriteLine(listInitExpression.ToString())

' This code produces the following output:
'
' new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
' Void Add(Int32, System.String)(3,"oak")

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a

ListInit(NewExpression, IEnumerable<Expression>)

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa um método chamado "Add" para adicionar elementos a uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, initializers As IEnumerable(Of Expression)) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

initializers
IEnumerable<Expression>

Um IEnumerable<T> que contém objetos Expression a serem usados para preencher a coleção de Initializers.

Retornos

Uma ListInitExpression que tem a propriedade NodeType igual a ListInit e a propriedade NewExpression definida para o valor especificado.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

Não há nenhum método de instância nomeado "Add" (não diferencia maiúsculas de minúsculas) declarado em newExpression.Type ou no tipo base dele.

- ou -

O método add no newExpression.Type ou no tipo base dele não aceita exatamente um argumento.

- ou -

O tipo representado pela propriedade Type do primeiro elemento de initializers não é atribuível ao tipo de argumento do método add em newExpression.Type ou no tipo base dele.

- ou -

Existe mais de um método compatível com o argumento nomeado "Add" (não diferencia maiúsculas de minúsculas) em newExpression.Type e/ou o tipo base dele.

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

Para usar essa sobrecarga de ListInit(NewExpression, IEnumerable<Expression>), newExpression. O tipo ou seu tipo base deve declarar um único método chamado "Add" (não diferencia maiúsculas de minúsculas) que usa exatamente um argumento. O tipo do argumento deve ser atribuível do tipo representado pela Type propriedade do primeiro elemento de initializers.

A Initializers propriedade do retornado ListInitExpression contém um elemento do tipo ElementInit para cada elemento de initializers. A Arguments propriedade de cada elemento de Initializers é uma coleção singleton que contém o elemento correspondente de initializers. A AddMethod propriedade de cada elemento de Initializers representa o método add que foi descoberto em newExpression. Digite ou seu tipo base.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a

ListInit(NewExpression, ElementInit[])

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa objetos ElementInit especificados para inicializar uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, ... cli::array <System::Linq::Expressions::ElementInit ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, params System.Linq.Expressions.ElementInit[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Linq.Expressions.ElementInit[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, ParamArray initializers As ElementInit()) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

initializers
ElementInit[]

Uma matriz de objetos ElementInit a serem usados para popular a coleção de Initializers.

Retornos

Um ListInitExpression que tem a propriedade NodeType igual a ListInit e as propriedades NewExpression e Initializers definidas com os valores especificados.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

Exemplos

O exemplo a seguir demonstra como usar o ListInit(NewExpression, ElementInit[]) método para criar um ListInitExpression que representa a inicialização de uma nova instância de dicionário com dois pares chave-valor.

string tree1 = "maple";
string tree2 = "oak";

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

// Create two ElementInit objects that represent the
// two key-value pairs to add to the Dictionary.
System.Linq.Expressions.ElementInit elementInit1 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree1.Length),
        System.Linq.Expressions.Expression.Constant(tree1));
System.Linq.Expressions.ElementInit elementInit2 =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree2.Length),
        System.Linq.Expressions.Expression.Constant(tree2));

// Create a NewExpression that represents constructing
// a new instance of Dictionary<int, string>.
System.Linq.Expressions.NewExpression newDictionaryExpression =
    System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>));

// Create a ListInitExpression that represents initializing
// a new Dictionary<> instance with two key-value pairs.
System.Linq.Expressions.ListInitExpression listInitExpression =
    System.Linq.Expressions.Expression.ListInit(
        newDictionaryExpression,
        elementInit1,
        elementInit2);

Console.WriteLine(listInitExpression.ToString());

// This code produces the following output:
//
// new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
// Void Add(Int32, System.String)(3,"oak")}
Dim tree1 As String = "maple"
Dim tree2 As String = "oak"

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

' Create two ElementInit objects that represent the
' two key-value pairs to add to the Dictionary.
Dim elementInit1 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree1.Length), _
        System.Linq.Expressions.Expression.Constant(tree1))
Dim elementInit2 As System.Linq.Expressions.ElementInit = _
    System.Linq.Expressions.Expression.ElementInit( _
        addMethod, _
        System.Linq.Expressions.Expression.Constant(tree2.Length), _
        System.Linq.Expressions.Expression.Constant(tree2))

' Create a NewExpression that represents constructing
' a new instance of Dictionary(Of Integer, String).
Dim newDictionaryExpression As System.Linq.Expressions.NewExpression = _
    System.Linq.Expressions.Expression.[New](Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]"))

' Create a ListInitExpression that represents initializing
' a new Dictionary(Of T) instance with two key-value pairs.
Dim listInitExpression As System.Linq.Expressions.ListInitExpression = _
    System.Linq.Expressions.Expression.ListInit( _
        newDictionaryExpression, _
        elementInit1, _
        elementInit2)

Console.WriteLine(listInitExpression.ToString())

' This code produces the following output:
'
' new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"),
' Void Add(Int32, System.String)(3,"oak")

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a

ListInit(NewExpression, Expression[])

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa um método chamado "Add" para adicionar elementos a uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, ... cli::array <System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, params System.Linq.Expressions.Expression[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, ParamArray initializers As Expression()) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

initializers
Expression[]

Uma matriz de objetos Expression a serem usados para popular a coleção de Initializers.

Retornos

Uma ListInitExpression que tem a propriedade NodeType igual a ListInit e a propriedade NewExpression definida para o valor especificado.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

Não há nenhum método de instância nomeado "Add" (não diferencia maiúsculas de minúsculas) declarado em newExpression.Type ou no tipo base dele.

- ou -

O método add no newExpression.Type ou no tipo base dele não aceita exatamente um argumento.

- ou -

O tipo representado pela propriedade Type do primeiro elemento de initializers não é atribuível ao tipo de argumento do método add em newExpression.Type ou no tipo base dele.

- ou -

Existe mais de um método compatível com o argumento nomeado "Add" (não diferencia maiúsculas de minúsculas) em newExpression.Type e/ou o tipo base dele.

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

Para usar essa sobrecarga de ListInit(NewExpression, Expression[]), newExpression. O tipo ou seu tipo base deve declarar um único método chamado "Add" (não diferencia maiúsculas de minúsculas) que usa exatamente um argumento. O tipo do argumento deve ser atribuível do tipo representado pela Type propriedade do primeiro elemento de initializers.

A Initializers propriedade do retornado ListInitExpression contém um elemento do tipo ElementInit para cada elemento de initializers. A Arguments propriedade de cada elemento de Initializers é uma coleção singleton que contém o elemento correspondente de initializers. A AddMethod propriedade de cada elemento de Initializers representa o método add que foi descoberto em newExpression. Digite ou seu tipo base.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa um método especificado para adicionar elementos a uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Reflection::MethodInfo ^ addMethod, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo? addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, addMethod As MethodInfo, initializers As IEnumerable(Of Expression)) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

addMethod
MethodInfo

Um MethodInfo que representa um método de instância nomeado "Add" (não diferencia maiúsculas de minúsculas), que adiciona um elemento a uma coleção.

initializers
IEnumerable<Expression>

Um IEnumerable<T> que contém objetos Expression a serem usados para preencher a coleção de Initializers.

Retornos

Uma ListInitExpression que tem a propriedade NodeType igual a ListInit e a propriedade NewExpression definida para o valor especificado.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

- ou -

addMethod não é null e não representa um método de instância nomeado "Add" (não diferencia maiúsculas de minúsculas) que aceita exatamente um argumento.

- ou -

addMethod não é null e o tipo representado pela propriedade Type de um ou mais elementos de initializers não pode ser atribuída ao tipo de argumento do método representado por addMethod.

addMethod é null e nenhum método de instância nomeado "Add" que aceita um argumento de tipo compatível existe no newExpression.Type ou no tipo base dele.

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

Se addMethod for null, newExpression. O tipo ou seu tipo base deve declarar um único método chamado "Add" (não diferencia maiúsculas de minúsculas) que usa exatamente um argumento. Se addMethod não nullfor , ele deverá representar um método de instância chamado "Add" (não diferencia maiúsculas de minúsculas) que tenha exatamente um parâmetro. O tipo representado pela Type propriedade de cada elemento de initializers deve ser atribuível ao tipo de argumento do método add.

A Initializers propriedade do retornado ListInitExpression contém um elemento do tipo ElementInit para cada elemento de initializers. A Arguments propriedade de cada elemento de Initializers é uma coleção singleton que contém o elemento correspondente de initializers. A AddMethod propriedade de cada elemento de Initializers é igual a addMethod.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a

ListInit(NewExpression, MethodInfo, Expression[])

Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs
Origem:
ListInitExpression.cs

Cria um ListInitExpression que usa um método especificado para adicionar elementos a uma coleção.

public:
 static System::Linq::Expressions::ListInitExpression ^ ListInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Reflection::MethodInfo ^ addMethod, ... cli::array <System::Linq::Expressions::Expression ^> ^ initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo addMethod, params System.Linq.Expressions.Expression[] initializers);
public static System.Linq.Expressions.ListInitExpression ListInit (System.Linq.Expressions.NewExpression newExpression, System.Reflection.MethodInfo? addMethod, params System.Linq.Expressions.Expression[] initializers);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ListInitExpression
Public Shared Function ListInit (newExpression As NewExpression, addMethod As MethodInfo, ParamArray initializers As Expression()) As ListInitExpression

Parâmetros

newExpression
NewExpression

Um NewExpression para definir a propriedade NewExpression igual a ele.

addMethod
MethodInfo

Um MethodInfo que representa um método de instância que aceita um argumento, que adiciona um elemento a uma coleção.

initializers
Expression[]

Uma matriz de objetos Expression a serem usados para popular a coleção de Initializers.

Retornos

Uma ListInitExpression que tem a propriedade NodeType igual a ListInit e a propriedade NewExpression definida para o valor especificado.

Exceções

newExpression ou initializers é null.

- ou -

Um ou mais elementos de initializers são null.

newExpression.Type não implementa IEnumerable.

- ou -

addMethod não é null e não representa um método de instância nomeado "Add" (não diferencia maiúsculas de minúsculas) que aceita exatamente um argumento.

- ou -

addMethod não é null e o tipo representado pela propriedade Type de um ou mais elementos de initializers não pode ser atribuída ao tipo de argumento do método representado por addMethod.

addMethod é null e nenhum método de instância nomeado "Add" que aceita um argumento de tipo compatível existe no newExpression.Type ou no tipo base dele.

Comentários

A Type propriedade de newExpression deve representar um tipo que implementa IEnumerable.

Se addMethod for null, newExpression. O tipo ou seu tipo base deve declarar um único método chamado "Add" (não diferencia maiúsculas de minúsculas) que usa exatamente um argumento. Se addMethod não nullfor , ele deverá representar um método de instância chamado "Add" (não diferencia maiúsculas de minúsculas) que tenha exatamente um parâmetro. O tipo representado pela Type propriedade de cada elemento de initializers deve ser atribuível ao tipo de argumento do método add.

A Initializers propriedade do retornado ListInitExpression contém um elemento do tipo ElementInit para cada elemento de initializers. A Arguments propriedade de cada elemento de Initializers é uma coleção singleton que contém o elemento correspondente de initializers. A AddMethod propriedade de cada elemento de Initializers é igual a addMethod.

A Type propriedade do resultante ListInitExpression é igual a newExpression. Tipo.

Aplica-se a