Partager via


Expression.ListInit Méthode

Définition

Crée un ListInitExpression.

Surcharges

ListInit(NewExpression, IEnumerable<ElementInit>)

Crée un ListInitExpression qui utilise des objets ElementInit spécifiés pour initialiser une collection.

ListInit(NewExpression, IEnumerable<Expression>)

Crée un ListInitExpression qui utilise une méthode nommée « Add » pour ajouter des éléments à une collection.

ListInit(NewExpression, ElementInit[])

Crée un ListInitExpression qui utilise des objets ElementInit spécifiés pour initialiser une collection.

ListInit(NewExpression, Expression[])

Crée un ListInitExpression qui utilise une méthode nommée « Add » pour ajouter des éléments à une collection.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Crée un ListInitExpression qui utilise une méthode spécifiée pour ajouter des éléments à une collection.

ListInit(NewExpression, MethodInfo, Expression[])

Crée un ListInitExpression qui utilise une méthode spécifiée pour ajouter des éléments à une collection.

ListInit(NewExpression, IEnumerable<ElementInit>)

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

Crée un ListInitExpression qui utilise des objets ElementInit spécifiés pour initialiser une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

initializers
IEnumerable<ElementInit>

IEnumerable<T> qui contient des objets ElementInit à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont les propriétés NewExpression et Initializers ont les valeurs spécifiées.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

Exemples

L’exemple suivant montre comment utiliser la ListInit(NewExpression, ElementInit[]) méthode pour créer un ListInitExpression qui représente l’initialisation d’un nouveau dictionnaire instance avec deux paires clé-valeur.

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

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à

ListInit(NewExpression, IEnumerable<Expression>)

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

Crée un ListInitExpression qui utilise une méthode nommée « Add » pour ajouter des éléments à une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

initializers
IEnumerable<Expression>

IEnumerable<T> qui contient des objets Expression à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont la propriété NewExpression a la valeur spécifiée.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

Il n’existe aucune méthode d’instance nommée « Add » (non-respect de la casse) déclaré dans newExpression.Type ou son type de base.

- ou -

La méthode add sur newExpression.Type ou son type de base ne prend pas exactement un argument.

- ou -

Le type représenté par la propriété Type du premier élément de initializers n’est pas affectable au type d’argument de la méthode add sur newExpression.Type ou son type de base.

- ou -

Plusieurs méthodes compatibles avec des arguments nommées « Add » (non-respect de la casse) existent sur newExpression.Type et/ou son type de base.

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

Pour utiliser cette surcharge de ListInit(NewExpression, IEnumerable<Expression>), newExpression. Le type ou son type de base doit déclarer une méthode unique nommée « Add » (qui ne respecte pas la casse) qui prend exactement un seul argument. Le type de l’argument doit être assignable à partir du type représenté par la Type propriété du premier élément de initializers.

La Initializers propriété du retourné ListInitExpression contient un élément de type ElementInit pour chaque élément de initializers. La Arguments propriété de chaque élément de Initializers est une collection singleton qui contient l’élément correspondant de initializers. La AddMethod propriété de chaque élément de Initializers représente la méthode add qui a été découverte sur newExpression. Type ou son type de base.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à

ListInit(NewExpression, ElementInit[])

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

Crée un ListInitExpression qui utilise des objets ElementInit spécifiés pour initialiser une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

initializers
ElementInit[]

Tableau d'objets ElementInit à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont les propriétés NewExpression et Initializers ont les valeurs spécifiées.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

Exemples

L’exemple suivant montre comment utiliser la ListInit(NewExpression, ElementInit[]) méthode pour créer un ListInitExpression qui représente l’initialisation d’un nouveau dictionnaire instance avec deux paires clé-valeur.

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

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à

ListInit(NewExpression, Expression[])

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

Crée un ListInitExpression qui utilise une méthode nommée « Add » pour ajouter des éléments à une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

initializers
Expression[]

Tableau d'objets Expression à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont la propriété NewExpression a la valeur spécifiée.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

Il n’existe aucune méthode d’instance nommée « Add » (non-respect de la casse) déclaré dans newExpression.Type ou son type de base.

- ou -

La méthode add sur newExpression.Type ou son type de base ne prend pas exactement un argument.

- ou -

Le type représenté par la propriété Type du premier élément de initializers n’est pas affectable au type d’argument de la méthode add sur newExpression.Type ou son type de base.

- ou -

Plusieurs méthodes compatibles avec des arguments nommées « Add » (non-respect de la casse) existent sur newExpression.Type et/ou son type de base.

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

Pour utiliser cette surcharge de ListInit(NewExpression, Expression[]), newExpression. Le type ou son type de base doit déclarer une méthode unique nommée « Add » (qui ne respecte pas la casse) qui prend exactement un seul argument. Le type de l’argument doit être assignable à partir du type représenté par la Type propriété du premier élément de initializers.

La Initializers propriété du retourné ListInitExpression contient un élément de type ElementInit pour chaque élément de initializers. La Arguments propriété de chaque élément de Initializers est une collection singleton qui contient l’élément correspondant de initializers. La AddMethod propriété de chaque élément de Initializers représente la méthode add qui a été découverte sur newExpression. Type ou son type de base.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

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

Crée un ListInitExpression qui utilise une méthode spécifiée pour ajouter des éléments à une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

addMethod
MethodInfo

MethodInfo qui représente une méthode d'instance nommée "Add" (non respect de la casse), qui ajoute un élément à une collection.

initializers
IEnumerable<Expression>

IEnumerable<T> qui contient des objets Expression à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont la propriété NewExpression a la valeur spécifiée.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

- ou -

addMethod n'est pas null et ne représente pas une méthode d'instance nommée "Add" (non respect de la casse) qui prend exactement un argument.

- ou -

addMethod n'est pas null et le type représenté par la propriété Type d'un ou plusieurs éléments de initializers ne peut pas être assigné au type d'argument de la méthode que addMethod représente.

addMethod est null et il n'existe aucune méthode d'instance nommée "Add" prenant un argument compatible avec le type sur newExpression.Type ou son type de base.

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

Si addMethod a la valeur null, newExpression. Le type ou son type de base doit déclarer une méthode unique nommée « Add » (qui ne respecte pas la casse) qui prend exactement un seul argument. Si addMethod n’est pas , elle doit représenter une méthode instance nommée « Add » (qui ne respecte pas nullla casse) qui a exactement un paramètre. Le type représenté par la Type propriété de chaque élément de initializers doit être assignable au type d’argument de la méthode add.

La Initializers propriété du retourné ListInitExpression contient un élément de type ElementInit pour chaque élément de initializers. La Arguments propriété de chaque élément de Initializers est une collection singleton qui contient l’élément correspondant de initializers. La AddMethod propriété de chaque élément de Initializers est égale à addMethod.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à

ListInit(NewExpression, MethodInfo, Expression[])

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

Crée un ListInitExpression qui utilise une méthode spécifiée pour ajouter des éléments à une collection.

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

Paramètres

newExpression
NewExpression

NewExpression auquel la propriété NewExpression doit être égale.

addMethod
MethodInfo

MethodInfo qui représente une méthode d'instance prenant un argument, qui ajoute un élément à une collection.

initializers
Expression[]

Tableau d'objets Expression à utiliser pour remplir la collection Initializers.

Retours

ListInitExpression dont la propriété NodeType est égale à ListInit et dont la propriété NewExpression a la valeur spécifiée.

Exceptions

newExpression ou initializers est null.

- ou -

Un ou plusieurs éléments de initializers sont null.

newExpression.Type n’implémente pas IEnumerable.

- ou -

addMethod n'est pas null et ne représente pas une méthode d'instance nommée "Add" (non respect de la casse) qui prend exactement un argument.

- ou -

addMethod n'est pas null et le type représenté par la propriété Type d'un ou plusieurs éléments de initializers ne peut pas être assigné au type d'argument de la méthode que addMethod représente.

addMethod est null et il n'existe aucune méthode d'instance nommée "Add" prenant un argument compatible avec le type sur newExpression.Type ou son type de base.

Remarques

La Type propriété de newExpression doit représenter un type qui implémente IEnumerable.

Si addMethod a la valeur null, newExpression. Le type ou son type de base doit déclarer une méthode unique nommée « Add » (qui ne respecte pas la casse) qui prend exactement un seul argument. Si addMethod n’est pas , elle doit représenter une méthode instance nommée « Add » (qui ne respecte pas nullla casse) qui a exactement un paramètre. Le type représenté par la Type propriété de chaque élément de initializers doit être assignable au type d’argument de la méthode add.

La Initializers propriété du retourné ListInitExpression contient un élément de type ElementInit pour chaque élément de initializers. La Arguments propriété de chaque élément de Initializers est une collection singleton qui contient l’élément correspondant de initializers. La AddMethod propriété de chaque élément de Initializers est égale à addMethod.

La Type propriété du résultat ListInitExpression est égale à newExpression. Type.

S’applique à