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 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.