Expression.ListInit Метод

Определение

Создает объект ListInitExpression.Creates a ListInitExpression.

Перегрузки

ListInit(NewExpression, IEnumerable<ElementInit>)

Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.Creates a ListInitExpression that uses specified ElementInit objects to initialize a collection.

ListInit(NewExpression, IEnumerable<Expression>)

Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.Creates a ListInitExpression that uses a method named "Add" to add elements to a collection.

ListInit(NewExpression, ElementInit[])

Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.Creates a ListInitExpression that uses specified ElementInit objects to initialize a collection.

ListInit(NewExpression, Expression[])

Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.Creates a ListInitExpression that uses a method named "Add" to add elements to a collection.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.Creates a ListInitExpression that uses a specified method to add elements to a collection.

ListInit(NewExpression, MethodInfo, Expression[])

Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.Creates a ListInitExpression that uses a specified method to add elements to a collection.

ListInit(NewExpression, IEnumerable<ElementInit>)

Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.Creates a ListInitExpression that uses specified ElementInit objects to initialize a 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

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

initializers
IEnumerable<ElementInit>

IEnumerable<T>, содержащий все объекты ElementInit, используемые для заполнения коллекции Initializers.An IEnumerable<T> that contains ElementInit objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойствомNodeType, равным ListInit, и свойствами NewExpression и Initializers, для которых заданы указанные значения.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression and Initializers properties set to the specified values.

Исключения

Значение параметра newExpression или initializersnull.newExpression or initializers is null.

-или--or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

Примеры

В следующем примере демонстрируется использование ListInit(NewExpression, ElementInit[]) метода для создания объекта ListInitExpression , который представляет инициализацию нового экземпляра Dictionary с двумя парами "ключ-значение".The following example demonstrates how to use the ListInit(NewExpression, ElementInit[]) method to create a ListInitExpression that represents the initialization of a new dictionary instance with two key-value pairs.

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

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

ListInit(NewExpression, IEnumerable<Expression>)

Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.Creates a ListInitExpression that uses a method named "Add" to add elements to a 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

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

initializers
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Initializers.An IEnumerable<T> that contains Expression objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression property set to the specified value.

Исключения

Параметр newExpression или initializers имеет значение null.newExpression or initializers is null.

-или--or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

В newExpression или его базовом типе не объявлен метод экземпляра с именем "Добавить" (без учета регистра).There is no instance method named "Add" (case insensitive) declared in newExpression.Type or its base type.

-или--or- Метод "Добавить" в newExpression.Type или его базовом типе не принимает ровно один аргумент.The add method on newExpression.Type or its base type does not take exactly one argument.

-или--or- Тип, представленный свойством Type первого элемента initializers, невозможно назначить типу аргумента метода "Добавить" в newExpression.Type или его базовом типе.The type represented by the Type property of the first element of initializers is not assignable to the argument type of the add method on newExpression.Type or its base type.

- или --or- В newExpression.Type или его базовом типе есть несколько методов с именем "Добавить" (без учета регистра), совместимых с аргументом.More than one argument-compatible method named "Add" (case-insensitive) exists on newExpression.Type and/or its base type.

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Чтобы использовать эту перегрузку ListInit(NewExpression, IEnumerable<Expression>),. newExpression Тип или его базовый тип должен объявлять один метод с именем "Add" (без учета регистра), принимающий ровно один аргумент.In order to use this overload of ListInit(NewExpression, IEnumerable<Expression>), newExpression.Type or its base type must declare a single method named "Add" (case insensitive) that takes exactly one argument. Тип аргумента должен быть назначен из типа, представленного Type свойством первого initializersэлемента.The type of the argument must be assignable from the type represented by the Type property of the first element of initializers.

Свойство возвращаемого ListInitExpression элемента содержит один элемент initializersтипа ElementInit для каждого элемента. InitializersThe Initializers property of the returned ListInitExpression contains one element of type ElementInit for each element of initializers. Свойство каждого элемента является одноэлементной коллекцией, initializersсодержащей соответствующий элемент. Initializers ArgumentsThe Arguments property of each element of Initializers is a singleton collection that contains the corresponding element of initializers. Свойство каждого элемента представляет метод Add, который был обнаружен в newExpression. Initializers AddMethod Тип или его базовый тип.The AddMethod property of each element of Initializers represents the add method that was discovered on newExpression.Type or its base type.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

ListInit(NewExpression, ElementInit[])

Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.Creates a ListInitExpression that uses specified ElementInit objects to initialize a 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

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

initializers
ElementInit[]

Массив объектов ElementInit для заполнения коллекции Initializers.An array of ElementInit objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойствомNodeType, равным ListInit, и свойствами NewExpression и Initializers, для которых заданы указанные значения.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression and Initializers properties set to the specified values.

Исключения

Параметр newExpression или initializers имеет значение null.newExpression or initializers is null.

- или --or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

Примеры

В следующем примере демонстрируется использование ListInit(NewExpression, ElementInit[]) метода для создания объекта ListInitExpression , который представляет инициализацию нового экземпляра Dictionary с двумя парами "ключ-значение".The following example demonstrates how to use the ListInit(NewExpression, ElementInit[]) method to create a ListInitExpression that represents the initialization of a new dictionary instance with two key-value pairs.

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

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

ListInit(NewExpression, Expression[])

Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.Creates a ListInitExpression that uses a method named "Add" to add elements to a 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

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

initializers
Expression[]

Массив объектов Expression для заполнения коллекции Initializers.An array of Expression objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression property set to the specified value.

Исключения

Параметр newExpression или initializers имеет значение null.newExpression or initializers is null.

- или --or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

В newExpression или его базовом типе не объявлен метод экземпляра с именем "Добавить" (без учета регистра).There is no instance method named "Add" (case insensitive) declared in newExpression.Type or its base type.

- или --or- Метод "Добавить" в newExpression.Type или его базовом типе не принимает ровно один аргумент.The add method on newExpression.Type or its base type does not take exactly one argument.

- или --or- Тип, представленный свойством Type первого элемента initializers, невозможно назначить типу аргумента метода "Добавить" в newExpression.Type или его базовом типе.The type represented by the Type property of the first element of initializers is not assignable to the argument type of the add method on newExpression.Type or its base type.

- или --or- В newExpression.Type или его базовом типе есть несколько методов с именем "Добавить" (без учета регистра), совместимых с аргументом.More than one argument-compatible method named "Add" (case-insensitive) exists on newExpression.Type and/or its base type.

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Чтобы использовать эту перегрузку ListInit(NewExpression, Expression[]),. newExpression Тип или его базовый тип должен объявлять один метод с именем "Add" (без учета регистра), принимающий ровно один аргумент.In order to use this overload of ListInit(NewExpression, Expression[]), newExpression.Type or its base type must declare a single method named "Add" (case insensitive) that takes exactly one argument. Тип аргумента должен быть назначен из типа, представленного Type свойством первого initializersэлемента.The type of the argument must be assignable from the type represented by the Type property of the first element of initializers.

Свойство возвращаемого ListInitExpression элемента содержит один элемент initializersтипа ElementInit для каждого элемента. InitializersThe Initializers property of the returned ListInitExpression contains one element of type ElementInit for each element of initializers. Свойство каждого элемента является одноэлементной коллекцией, initializersсодержащей соответствующий элемент. Initializers ArgumentsThe Arguments property of each element of Initializers is a singleton collection that contains the corresponding element of initializers. Свойство каждого элемента представляет метод Add, который был обнаружен в newExpression. Initializers AddMethod Тип или его базовый тип.The AddMethod property of each element of Initializers represents the add method that was discovered on newExpression.Type or its base type.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)

Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.Creates a ListInitExpression that uses a specified method to add elements to a 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);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ListInitExpression

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

addMethod
MethodInfo

MethodInfo, представляющий метод экземпляра с именем "Add" (без учета регистра), добавляющий элемент к коллекции.A MethodInfo that represents an instance method named "Add" (case insensitive), that adds an element to a collection.

initializers
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Initializers.An IEnumerable<T> that contains Expression objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression property set to the specified value.

Исключения

Параметр newExpression или initializers имеет значение null.newExpression or initializers is null.

- или --or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

-или--or- Значение addMethod не равно null и не представляет метод экземпляра с именем "Add" (без учета регистра), принимающий точно один аргумент.addMethod is not null and it does not represent an instance method named "Add" (case insensitive) that takes exactly one argument.

- или --or- Значение addMethod не равно null, а тип, представленный свойством Type одного или нескольких элементов параметра initializers, нельзя назначить для типа аргумента метода, представленного addMethod.addMethod is not null and the type represented by the Type property of one or more elements of initializers is not assignable to the argument type of the method that addMethod represents.

addMethod не равен null, и отсутствует метод экземпляра с именем "Add", принимающий один аргумент, совместимый с типом, для параметра newExpression.Type или его базового типа.addMethod is null and no instance method named "Add" that takes one type-compatible argument exists on newExpression.Type or its base type.

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Если addMethod имеет nullзначение ,newExpressionто. Тип или его базовый тип должен объявлять один метод с именем "Add" (без учета регистра), принимающий ровно один аргумент.If addMethod is null, newExpression.Type or its base type must declare a single method named "Add" (case insensitive) that takes exactly one argument. Если addMethod параметр не nullравен, он должен представлять метод экземпляра с именем "Add" (без учета регистра), имеющий ровно один аргумент.If addMethod is not null, it must represent an instance method named "Add" (case insensitive) that has exactly one parameter. Тип, представленный Type свойством каждого элемента, initializers должен быть назначен типу аргумента метода Add.The type represented by the Type property of each element of initializers must be assignable to the argument type of the add method.

Свойство возвращаемого ListInitExpression элемента содержит один элемент initializersтипа ElementInit для каждого элемента. InitializersThe Initializers property of the returned ListInitExpression contains one element of type ElementInit for each element of initializers. Свойство каждого элемента является одноэлементной коллекцией, initializersсодержащей соответствующий элемент. Initializers ArgumentsThe Arguments property of each element of Initializers is a singleton collection that contains the corresponding element of initializers. AddMethod Свойство каждогоInitializers элемента равно addMethod.The AddMethod property of each element of Initializers is equal to addMethod.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

ListInit(NewExpression, MethodInfo, Expression[])

Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.Creates a ListInitExpression that uses a specified method to add elements to a 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);
static member ListInit : System.Linq.Expressions.NewExpression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ListInitExpression

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.A NewExpression to set the NewExpression property equal to.

addMethod
MethodInfo

MethodInfo, представляющий метод экземпляра с одним аргументом, добавляющий элемент к коллекции.A MethodInfo that represents an instance method that takes one argument, that adds an element to a collection.

initializers
Expression[]

Массив объектов Expression для заполнения коллекции Initializers.An array of Expression objects to use to populate the Initializers collection.

Возвраты

Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.A ListInitExpression that has the NodeType property equal to ListInit and the NewExpression property set to the specified value.

Исключения

Параметр newExpression или initializers имеет значение null.newExpression or initializers is null.

-или--or- Один или несколько элементов initializers имеют значение null.One or more elements of initializers are null.

newExpression.Type не реализует IEnumerable.newExpression.Type does not implement IEnumerable.

- или --or- Значение addMethod не равно null и не представляет метод экземпляра с именем "Add" (без учета регистра), принимающий точно один аргумент.addMethod is not null and it does not represent an instance method named "Add" (case insensitive) that takes exactly one argument.

-или--or- Значение addMethod не равно null, а тип, представленный свойством Type одного или нескольких элементов параметра initializers, нельзя назначить для типа аргумента метода, представленного addMethod.addMethod is not null and the type represented by the Type property of one or more elements of initializers is not assignable to the argument type of the method that addMethod represents.

addMethod не равен null, и отсутствует метод экземпляра с именем "Add", принимающий один аргумент, совместимый с типом, для параметра newExpression.Type или его базового типа.addMethod is null and no instance method named "Add" that takes one type-compatible argument exists on newExpression.Type or its base type.

Комментарии

Свойство объекта newExpression должно представлять тип, реализующий IEnumerable. TypeThe Type property of newExpression must represent a type that implements IEnumerable.

Если addMethod имеет nullзначение ,newExpressionто. Тип или его базовый тип должен объявлять один метод с именем "Add" (без учета регистра), принимающий ровно один аргумент.If addMethod is null, newExpression.Type or its base type must declare a single method named "Add" (case insensitive) that takes exactly one argument. Если addMethod параметр не nullравен, он должен представлять метод экземпляра с именем "Add" (без учета регистра), имеющий ровно один аргумент.If addMethod is not null, it must represent an instance method named "Add" (case insensitive) that has exactly one parameter. Тип, представленный Type свойством каждого элемента, initializers должен быть назначен типу аргумента метода Add.The type represented by the Type property of each element of initializers must be assignable to the argument type of the add method.

Свойство возвращаемого ListInitExpression элемента содержит один элемент initializersтипа ElementInit для каждого элемента. InitializersThe Initializers property of the returned ListInitExpression contains one element of type ElementInit for each element of initializers. Свойство каждого элемента является одноэлементной коллекцией, initializersсодержащей соответствующий элемент. Initializers ArgumentsThe Arguments property of each element of Initializers is a singleton collection that contains the corresponding element of initializers. AddMethod Свойство каждогоInitializers элемента равно addMethod.The AddMethod property of each element of Initializers is equal to addMethod.

Свойство результирующего ListInitExpression объекта равно newExpression. Type Тип.The Type property of the resulting ListInitExpression is equal to newExpression.Type.

Применяется к