Expression.ListInit Metoda

Definicja

Tworzy element ListInitExpression.

Przeciążenia

ListInit(NewExpression, IEnumerable<ElementInit>)

Tworzy obiekt ListInitExpression , który używa określonych ElementInit obiektów do inicjowania kolekcji.

ListInit(NewExpression, IEnumerable<Expression>)

Tworzy obiekt ListInitExpression , który używa metody o nazwie "Add", aby dodać elementy do kolekcji.

ListInit(NewExpression, ElementInit[])

Tworzy obiekt ListInitExpression , który używa określonych ElementInit obiektów do inicjowania kolekcji.

ListInit(NewExpression, Expression[])

Tworzy obiekt ListInitExpression , który używa metody o nazwie "Add", aby dodać elementy do kolekcji.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Tworzy obiekt ListInitExpression , który używa określonej metody do dodawania elementów do kolekcji.

ListInit(NewExpression, MethodInfo, Expression[])

Tworzy obiekt ListInitExpression , który używa określonej metody do dodawania elementów do kolekcji.

ListInit(NewExpression, IEnumerable<ElementInit>)

Tworzy obiekt ListInitExpression , który używa określonych ElementInit obiektów do inicjowania kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

initializers
IEnumerable<ElementInit>

Obiekt IEnumerable<T> zawierający ElementInit obiekty używane do wypełniania kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwości i Initializers ustawioną na określone wartości.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

Przykłady

W poniższym przykładzie pokazano, jak za pomocą ListInit(NewExpression, ElementInit[]) metody utworzyć metodę reprezentującą ListInitExpression inicjowanie nowego wystąpienia słownika z dwiema parami klucz-wartość.

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

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy

ListInit(NewExpression, IEnumerable<Expression>)

Tworzy obiekt ListInitExpression , który używa metody o nazwie "Add", aby dodać elementy do kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

initializers
IEnumerable<Expression>

Obiekt IEnumerable<T> zawierający Expression obiekty używane do wypełniania kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwość ustawioną na określoną wartość.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

Nie ma metody wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter) zadeklarowanej w pliku newExpression. Wpisz lub jego typ podstawowy.

-lub- Metoda add w obiekcie newExpression. Typ lub jego typ podstawowy nie bierze dokładnie jednego argumentu.

-lub- Typ reprezentowany przez Type właściwość pierwszego elementu initializers elementu nie można przypisać do typu argumentu metody add w elemecie newExpression. Wpisz lub jego typ podstawowy.

-lub- W obiekcie newExpressionistnieje więcej niż jedna metoda zgodna z argumentem o nazwie "Add" (bez uwzględniania wielkości liter). Wpisz i/lub jego typ podstawowy.

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Aby użyć tego przeciążenia elementu ListInit(NewExpression, IEnumerable<Expression>), newExpression. Typ lub jego typ podstawowy musi zadeklarować pojedynczą metodę o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument. Typ argumentu musi być przypisywany z typu reprezentowanego przez Type właściwość pierwszego elementu .initializers

Właściwość Initializers zwróconego ListInitExpression elementu zawiera jeden element typu ElementInit dla każdego elementu .initializers Właściwość Arguments każdego elementu elementu Initializers to pojedyncza kolekcja zawierająca odpowiedni element .initializers Właściwość AddMethod każdego elementu Initializers elementu reprezentuje metodę add, która została odnaleziona w elemecie newExpression. Wpisz lub jego typ podstawowy.

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy

ListInit(NewExpression, ElementInit[])

Tworzy obiekt ListInitExpression , który używa określonych ElementInit obiektów do inicjowania kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

initializers
ElementInit[]

Tablica ElementInit obiektów do użycia w celu wypełnienia kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwości i Initializers ustawioną na określone wartości.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

Przykłady

W poniższym przykładzie pokazano, jak za pomocą ListInit(NewExpression, ElementInit[]) metody utworzyć metodę reprezentującą ListInitExpression inicjowanie nowego wystąpienia słownika z dwiema parami klucz-wartość.

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

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy

ListInit(NewExpression, Expression[])

Tworzy obiekt ListInitExpression , który używa metody o nazwie "Add", aby dodać elementy do kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

initializers
Expression[]

Tablica Expression obiektów do użycia w celu wypełnienia kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwość ustawioną na określoną wartość.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

Nie ma metody wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter) zadeklarowanej w pliku newExpression. Wpisz lub jego typ podstawowy.

-lub- Metoda add w obiekcie newExpression. Typ lub jego typ podstawowy nie bierze dokładnie jednego argumentu.

-lub- Typ reprezentowany przez Type właściwość pierwszego elementu initializers elementu nie można przypisać do typu argumentu metody add w elemecie newExpression. Wpisz lub jego typ podstawowy.

-lub- W obiekcie newExpressionistnieje więcej niż jedna metoda zgodna z argumentem o nazwie "Add" (bez uwzględniania wielkości liter). Wpisz i/lub jego typ podstawowy.

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Aby użyć tego przeciążenia elementu ListInit(NewExpression, Expression[]), newExpression. Typ lub jego typ podstawowy musi zadeklarować pojedynczą metodę o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument. Typ argumentu musi być przypisywany z typu reprezentowanego przez Type właściwość pierwszego elementu .initializers

Właściwość Initializers zwróconego ListInitExpression elementu zawiera jeden element typu ElementInit dla każdego elementu .initializers Właściwość Arguments każdego elementu elementu Initializers to pojedyncza kolekcja zawierająca odpowiedni element .initializers Właściwość AddMethod każdego elementu Initializers elementu reprezentuje metodę add, która została odnaleziona w elemecie newExpression. Wpisz lub jego typ podstawowy.

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Tworzy obiekt ListInitExpression , który używa określonej metody do dodawania elementów do kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

addMethod
MethodInfo

Element MethodInfo reprezentujący metodę wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter), która dodaje element do kolekcji.

initializers
IEnumerable<Expression>

Obiekt IEnumerable<T> zawierający Expression obiekty używane do wypełniania kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwość ustawioną na określoną wartość.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

-lub- addMethod nie null jest i nie reprezentuje metody wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument.

-lub- addMethod nie null jest i typ reprezentowany przez Type właściwość jednego lub większej liczby elementów initializers nie można przypisać do typu argumentu metody, która addMethod reprezentuje.

addMethod jest i null nie istnieje metoda wystąpienia o nazwie "Add", która przyjmuje jeden argument zgodny z typem na . newExpression Wpisz lub jego typ podstawowy.

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Jeśli addMethod to null, newExpression. Typ lub jego typ podstawowy musi zadeklarować pojedynczą metodę o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument. Jeśli addMethod tak nie nulljest , musi reprezentować metodę wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter), która ma dokładnie jeden parametr. Typ reprezentowany przez Type właściwość każdego elementu initializers musi być przypisywany do typu argumentu metody add.

Właściwość Initializers zwróconego ListInitExpression elementu zawiera jeden element typu ElementInit dla każdego elementu .initializers Właściwość Arguments każdego elementu elementu Initializers to pojedyncza kolekcja zawierająca odpowiedni element .initializers Właściwość AddMethod każdego elementu jest Initializers równa addMethod.

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy

ListInit(NewExpression, MethodInfo, Expression[])

Tworzy obiekt ListInitExpression , który używa określonej metody do dodawania elementów do kolekcji.

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

Parametry

newExpression
NewExpression

A NewExpression , aby ustawić właściwość równą NewExpression .

addMethod
MethodInfo

Element MethodInfo reprezentujący metodę wystąpienia, która przyjmuje jeden argument, który dodaje element do kolekcji.

initializers
Expression[]

Tablica Expression obiektów do użycia w celu wypełnienia kolekcji Initializers .

Zwraca

ListInitExpression

WłaściwośćListInitExpression, która ma właściwość równą ListInit NodeType i NewExpression właściwość ustawioną na określoną wartość.

Wyjątki

newExpression lub initializers to null.

-lub- Co najmniej jeden element elementu initializers to null.

newExpression. Typ nie implementuje elementu IEnumerable.

-lub- addMethod nie null jest i nie reprezentuje metody wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument.

-lub- addMethod nie null jest i typ reprezentowany przez Type właściwość jednego lub większej liczby elementów initializers nie można przypisać do typu argumentu metody, która addMethod reprezentuje.

addMethod jest i null nie istnieje metoda wystąpienia o nazwie "Add", która przyjmuje jeden argument zgodny z typem na . newExpression Wpisz lub jego typ podstawowy.

Uwagi

Właściwość Type newExpression musi reprezentować typ implementujący IEnumerableelement .

Jeśli addMethod to null, newExpression. Typ lub jego typ podstawowy musi zadeklarować pojedynczą metodę o nazwie "Add" (bez uwzględniania wielkości liter), która przyjmuje dokładnie jeden argument. Jeśli addMethod tak nie nulljest , musi reprezentować metodę wystąpienia o nazwie "Add" (bez uwzględniania wielkości liter), która ma dokładnie jeden parametr. Typ reprezentowany przez Type właściwość każdego elementu initializers musi być przypisywany do typu argumentu metody add.

Właściwość Initializers zwróconego ListInitExpression elementu zawiera jeden element typu ElementInit dla każdego elementu .initializers Właściwość Arguments każdego elementu elementu Initializers to pojedyncza kolekcja zawierająca odpowiedni element .initializers Właściwość AddMethod każdego elementu jest Initializers równa addMethod.

Właściwość Type wynikowej ListInitExpression jest równa newExpression. Typu.

Dotyczy