Compartir a través de


Expression.ListInit Método

Definición

Crea una interfaz ListInitExpression.

Sobrecargas

ListInit(NewExpression, IEnumerable<ElementInit>)

Crea un objeto ListInitExpression que usa los objetos ElementInit especificados para inicializar una colección.

ListInit(NewExpression, IEnumerable<Expression>)

Crea un objeto ListInitExpression que usa un método llamado "Add" para agregar elementos a una colección.

ListInit(NewExpression, ElementInit[])

Crea un objeto ListInitExpression que usa los objetos ElementInit especificados para inicializar una colección.

ListInit(NewExpression, Expression[])

Crea un objeto ListInitExpression que usa un método llamado "Add" para agregar elementos a una colección.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Crea un objeto ListInitExpression que usa el método especificado para agregar elementos a una colección.

ListInit(NewExpression, MethodInfo, Expression[])

Crea un objeto ListInitExpression que usa el método especificado para agregar elementos a una colección.

ListInit(NewExpression, IEnumerable<ElementInit>)

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa los objetos ElementInit especificados para inicializar una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

initializers
IEnumerable<ElementInit>

IEnumerable<T> que contiene los objetos ElementInit que se van a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuyas propiedades NewExpression y Initializers se establecen en los valores especificados.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el ListInit(NewExpression, ElementInit[]) método para crear un ListInitExpression objeto que representa la inicialización de una nueva instancia de diccionario con dos pares clave-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")

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a

ListInit(NewExpression, IEnumerable<Expression>)

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa un método llamado "Add" para agregar elementos a una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

initializers
IEnumerable<Expression>

IEnumerable<T> que contiene los objetos Expression que se van a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuya propiedad NewExpression se establece en el valor especificado.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

No hay ningún método de instancia denominado "Add" (no distingue mayúsculas de minúsculas) declarado en newExpression.Type o su tipo base.

o bien

El método de adición en newExpression.Type o su tipo base no toma exactamente un argumento.

o bien

El tipo representado por la propiedad Type del primer elemento de initializers no es asignable al tipo de argumento del método de adición en newExpression.Type o su tipo base.

o bien

Existe más de un método compatible con los argumentos denominado "Add" (no distingue mayúsculas y minúsculas) en newExpression.Type o su tipo base.

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

Para usar esta sobrecarga de ListInit(NewExpression, IEnumerable<Expression>), newExpression. El tipo o su tipo base deben declarar un único método denominado "Add" (sin distinción entre mayúsculas y minúsculas) que toma exactamente un argumento. El tipo del argumento debe ser asignable desde el tipo representado por la Type propiedad del primer elemento de initializers.

La Initializers propiedad del devuelto ListInitExpression contiene un elemento de tipo ElementInit para cada elemento de initializers. La Arguments propiedad de cada elemento de Initializers es una colección singleton que contiene el elemento correspondiente de initializers. La AddMethod propiedad de cada elemento de Initializers representa el método add detectado en newExpression. Escriba o su tipo base.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a

ListInit(NewExpression, ElementInit[])

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa los objetos ElementInit especificados para inicializar una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

initializers
ElementInit[]

Matriz de objetos ElementInit que se va a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuyas propiedades NewExpression y Initializers se establecen en los valores especificados.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el ListInit(NewExpression, ElementInit[]) método para crear un ListInitExpression objeto que representa la inicialización de una nueva instancia de diccionario con dos pares clave-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")

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a

ListInit(NewExpression, Expression[])

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa un método llamado "Add" para agregar elementos a una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

initializers
Expression[]

Matriz de objetos Expression que se va a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuya propiedad NewExpression se establece en el valor especificado.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

No hay ningún método de instancia denominado "Add" (no distingue mayúsculas de minúsculas) declarado en newExpression.Type o su tipo base.

o bien

El método de adición en newExpression.Type o su tipo base no toma exactamente un argumento.

o bien

El tipo representado por la propiedad Type del primer elemento de initializers no es asignable al tipo de argumento del método de adición en newExpression.Type o su tipo base.

o bien

Existe más de un método compatible con los argumentos denominado "Add" (no distingue mayúsculas y minúsculas) en newExpression.Type o su tipo base.

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

Para usar esta sobrecarga de ListInit(NewExpression, Expression[]), newExpression. El tipo o su tipo base deben declarar un único método denominado "Add" (sin distinción entre mayúsculas y minúsculas) que toma exactamente un argumento. El tipo del argumento debe ser asignable desde el tipo representado por la Type propiedad del primer elemento de initializers.

La Initializers propiedad del devuelto ListInitExpression contiene un elemento de tipo ElementInit para cada elemento de initializers. La Arguments propiedad de cada elemento de Initializers es una colección singleton que contiene el elemento correspondiente de initializers. La AddMethod propiedad de cada elemento de Initializers representa el método add detectado en newExpression. Escriba o su tipo base.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa el método especificado para agregar elementos a una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

addMethod
MethodInfo

MethodInfo que representa un método de instancia llamado "Add" (no distingue entre mayúsculas y minúsculas) que agrega un elemento a una colección.

initializers
IEnumerable<Expression>

IEnumerable<T> que contiene los objetos Expression que se van a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuya propiedad NewExpression se establece en el valor especificado.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

o bien

addMethod no es null y no representa ningún método de instancia denominado "Add" (sin distinción entre mayúsculas y minúsculas) que tome exactamente un argumento.

o bien

addMethod no es null y el tipo representado por la propiedad Type de uno o varios elementos de initializers no se puede asignar al tipo de argumento del método que addMethod representa.

addMethod es null y, en newExpression.Type o su tipo base, no hay ningún método de instancia denominado "Add" que tome un argumento compatible con el tipo.

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

Si addMethod es null, newExpression. El tipo o su tipo base deben declarar un único método denominado "Add" (sin distinción entre mayúsculas y minúsculas) que toma exactamente un argumento. Si addMethod no nulles , debe representar un método de instancia denominado "Add" (sin distinción entre mayúsculas y minúsculas) que tenga exactamente un parámetro. El tipo representado por la Type propiedad de cada elemento de debe ser asignable al tipo de initializers argumento del método add.

La Initializers propiedad del devuelto ListInitExpression contiene un elemento de tipo ElementInit para cada elemento de initializers. La Arguments propiedad de cada elemento de Initializers es una colección singleton que contiene el elemento correspondiente de initializers. La AddMethod propiedad de cada elemento de Initializers es igual a addMethod.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a

ListInit(NewExpression, MethodInfo, Expression[])

Source:
ListInitExpression.cs
Source:
ListInitExpression.cs
Source:
ListInitExpression.cs

Crea un objeto ListInitExpression que usa el método especificado para agregar elementos a una colección.

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

NewExpression en el que se va a establecer la propiedad NewExpression.

addMethod
MethodInfo

MethodInfo que representa un método de instancia que toma un argumento que agrega un elemento a una colección.

initializers
Expression[]

Matriz de objetos Expression que se va a usar para rellenar la colección de Initializers.

Devoluciones

ListInitExpression cuya propiedad NodeType es ListInit y cuya propiedad NewExpression se establece en el valor especificado.

Excepciones

newExpression o initializers es null.

o bien

Uno o más elementos de initializers son null.

newExpression.Type no implementa IEnumerable.

o bien

addMethod no es null y no representa ningún método de instancia denominado "Add" (sin distinción entre mayúsculas y minúsculas) que tome exactamente un argumento.

o bien

addMethod no es null y el tipo representado por la propiedad Type de uno o varios elementos de initializers no se puede asignar al tipo de argumento del método que addMethod representa.

addMethod es null y, en newExpression.Type o su tipo base, no hay ningún método de instancia denominado "Add" que tome un argumento compatible con el tipo.

Comentarios

La Type propiedad de newExpression debe representar un tipo que implemente IEnumerable.

Si addMethod es null, newExpression. El tipo o su tipo base deben declarar un único método denominado "Add" (sin distinción entre mayúsculas y minúsculas) que toma exactamente un argumento. Si addMethod no nulles , debe representar un método de instancia denominado "Add" (sin distinción entre mayúsculas y minúsculas) que tenga exactamente un parámetro. El tipo representado por la Type propiedad de cada elemento de debe ser asignable al tipo de initializers argumento del método add.

La Initializers propiedad del devuelto ListInitExpression contiene un elemento de tipo ElementInit para cada elemento de initializers. La Arguments propiedad de cada elemento de Initializers es una colección singleton que contiene el elemento correspondiente de initializers. La AddMethod propiedad de cada elemento de Initializers es igual a addMethod.

La Type propiedad del resultante ListInitExpression es igual a newExpression. Tipo.

Se aplica a