Expression.ListInit Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria um ListInitExpression.
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 null
for , 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 null
for , 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.