Expression.ListInit Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает объект ListInitExpression.
Перегрузки
ListInit(NewExpression, IEnumerable<ElementInit>) |
Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции. |
ListInit(NewExpression, IEnumerable<Expression>) |
Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию. |
ListInit(NewExpression, ElementInit[]) |
Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции. |
ListInit(NewExpression, Expression[]) |
Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию. |
ListInit(NewExpression, MethodInfo, IEnumerable<Expression>) |
Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции. |
ListInit(NewExpression, MethodInfo, Expression[]) |
Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции. |
ListInit(NewExpression, IEnumerable<ElementInit>)
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- initializers
- IEnumerable<ElementInit>
IEnumerable<T>, содержащий все объекты ElementInit, используемые для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойствомNodeType, равным ListInit, и свойствами NewExpression и Initializers, для которых заданы указанные значения.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
Примеры
В следующем примере показано, как использовать ListInit(NewExpression, ElementInit[]) метод для создания ListInitExpression объекта , представляющего инициализацию нового экземпляра словаря с двумя парами "ключ-значение".
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")
Комментарии
Свойство TypenewExpression
должно представлять тип, реализующий IEnumerable.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.
Применяется к
ListInit(NewExpression, IEnumerable<Expression>)
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- initializers
- IEnumerable<Expression>
IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
В newExpression
или его базовом типе не объявлен метод экземпляра с именем "Добавить" (без учета регистра).
-или-
Метод "Добавить" в newExpression
.Type или его базовом типе не принимает ровно один аргумент.
-или-
Тип, представленный свойством Type первого элемента initializers
, невозможно назначить типу аргумента метода "Добавить" в newExpression
.Type или его базовом типе.
-или-
В newExpression
.Type или его базовом типе есть несколько методов с именем "Добавить" (без учета регистра), совместимых с аргументом.
Комментарии
Свойство TypenewExpression
должно представлять тип, реализующий IEnumerable.
Чтобы использовать эту перегрузку ListInit(NewExpression, IEnumerable<Expression>), . newExpression
Тип или его базовый тип должен объявлять один метод с именем Add (без учета регистра), который принимает ровно один аргумент. Тип аргумента должен быть назначаемым из типа, представленного свойством Type первого элемента initializers
.
Свойство Initializers возвращаемого ListInitExpression объекта содержит один элемент типа ElementInit для каждого элемента .initializers
Свойство Arguments каждого элемента является Initializers одноэлементной коллекцией, содержащей соответствующий элемент .initializers
Свойство AddMethod каждого элемента Initializers представляет метод add, обнаруженный в newExpression
. Тип или его базовый тип.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.
Применяется к
ListInit(NewExpression, ElementInit[])
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий указанные объекты ElementInit для инициализации коллекции.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- initializers
- ElementInit[]
Массив объектов ElementInit для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойствомNodeType, равным ListInit, и свойствами NewExpression и Initializers, для которых заданы указанные значения.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
Примеры
В следующем примере показано, как использовать ListInit(NewExpression, ElementInit[]) метод для создания ListInitExpression объекта , представляющего инициализацию нового экземпляра словаря с двумя парами "ключ-значение".
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")
Комментарии
Свойство TypenewExpression
должно представлять тип, реализующий IEnumerable.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.
Применяется к
ListInit(NewExpression, Expression[])
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий метод с именем "Добавить" для добавления элементов в коллекцию.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- initializers
- Expression[]
Массив объектов Expression для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
В newExpression
или его базовом типе не объявлен метод экземпляра с именем "Добавить" (без учета регистра).
-или-
Метод "Добавить" в newExpression
.Type или его базовом типе не принимает ровно один аргумент.
-или-
Тип, представленный свойством Type первого элемента initializers
, невозможно назначить типу аргумента метода "Добавить" в newExpression
.Type или его базовом типе.
-или-
В newExpression
.Type или его базовом типе есть несколько методов с именем "Добавить" (без учета регистра), совместимых с аргументом.
Комментарии
Свойство TypenewExpression
должно представлять тип, реализующий IEnumerable.
Чтобы использовать эту перегрузку ListInit(NewExpression, Expression[]), . newExpression
Тип или его базовый тип должен объявлять один метод с именем Add (без учета регистра), который принимает ровно один аргумент. Тип аргумента должен быть назначаемым из типа, представленного свойством Type первого элемента initializers
.
Свойство Initializers возвращаемого ListInitExpression объекта содержит один элемент типа ElementInit для каждого элемента .initializers
Свойство Arguments каждого элемента является Initializers одноэлементной коллекцией, содержащей соответствующий элемент .initializers
Свойство AddMethod каждого элемента Initializers представляет метод add, обнаруженный в newExpression
. Тип или его базовый тип.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.
Применяется к
ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- addMethod
- MethodInfo
MethodInfo, представляющий метод экземпляра с именем "Add" (без учета регистра), добавляющий элемент к коллекции.
- initializers
- IEnumerable<Expression>
IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
-или-
Значение addMethod
не равно null
и не представляет метод экземпляра с именем "Add" (без учета регистра), принимающий точно один аргумент.
-или-
Значение addMethod
не равно null
, а тип, представленный свойством Type одного или нескольких элементов параметра initializers
, нельзя назначить для типа аргумента метода, представленного addMethod
.
addMethod
не равен null
, и отсутствует метод экземпляра с именем "Add", принимающий один аргумент, совместимый с типом, для параметра newExpression
.Type или его базового типа.
Комментарии
Свойство TypenewExpression
должно представлять тип, реализующий IEnumerable.
Если addMethod
имеет значение , то newExpression
.null
Тип или его базовый тип должен объявлять один метод с именем Add (без учета регистра), который принимает ровно один аргумент. Если addMethod
значение не null
равно , он должен представлять метод экземпляра с именем Add (без учета регистра), который имеет ровно один параметр. Тип, представленный свойством Type каждого элемента , initializers
должен быть назначен типу аргумента метода add.
Свойство Initializers возвращаемого ListInitExpression объекта содержит один элемент типа ElementInit для каждого элемента .initializers
Свойство Arguments каждого элемента является Initializers одноэлементной коллекцией, содержащей соответствующий элемент .initializers
Свойство AddMethod каждого элемента равно InitializersaddMethod
.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.
Применяется к
ListInit(NewExpression, MethodInfo, Expression[])
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
- Исходный код:
- ListInitExpression.cs
Создает ListInitExpression, использующий указанный метод, чтобы добавить элементы к коллекции.
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
Параметры
- newExpression
- NewExpression
Объект NewExpression, который следует задать в качестве значения свойства NewExpression.
- addMethod
- MethodInfo
MethodInfo, представляющий метод экземпляра с одним аргументом, добавляющий элемент к коллекции.
- initializers
- Expression[]
Массив объектов Expression для заполнения коллекции Initializers.
Возвращаемое значение
Выражение ListInitExpression со свойством NodeType, равным ListInit, и свойством NewExpression, для которого задано указанное значение.
Исключения
Параметр newExpression
или initializers
имеет значение null
.
-или-
Один или несколько элементов initializers
имеют значение null
.
newExpression
.Type не реализует IEnumerable.
-или-
Значение addMethod
не равно null
и не представляет метод экземпляра с именем "Add" (без учета регистра), принимающий точно один аргумент.
-или-
Значение addMethod
не равно null
, а тип, представленный свойством Type одного или нескольких элементов параметра initializers
, нельзя назначить для типа аргумента метода, представленного addMethod
.
addMethod
не равен null
, и отсутствует метод экземпляра с именем "Add", принимающий один аргумент, совместимый с типом, для параметра newExpression
.Type или его базового типа.
Комментарии
Свойство TypenewExpression
объекта должно представлять тип, реализующий IEnumerable.
Если addMethod
имеет значение , .null
newExpression
Тип или его базовый тип должны объявлять один метод с именем "Add" (без учета регистра), который принимает ровно один аргумент. Если addMethod
значение не null
равно , он должен представлять метод экземпляра с именем Add (без учета регистра), имеющий ровно один параметр. Тип, представленный свойством Type каждого элемента , initializers
должен быть назначен типу аргумента метода add.
Свойство Initializers возвращаемого ListInitExpression объекта содержит один элемент типа ElementInit для каждого элемента initializers
. Свойство Arguments каждого элемента является Initializers одноэлементной коллекцией, содержащей соответствующий элемент .initializers
Свойство AddMethod каждого элемента равно InitializersaddMethod
.
Свойство Type результирующего ListInitExpression объекта равно newExpression
. Тип.