Expression.ElementInit Метод

Определение

Создает ElementInit.

Перегрузки

ElementInit(MethodInfo, IEnumerable<Expression>)

Создает объект ElementInit, присвоенный IEnumerable<T> в качестве второго аргумента.

ElementInit(MethodInfo, Expression[])

Создает ElementInit, присвоенный массиву значений в качестве второго аргумента.

ElementInit(MethodInfo, IEnumerable<Expression>)

Исходный код:
ElementInit.cs
Исходный код:
ElementInit.cs
Исходный код:
ElementInit.cs

Создает объект ElementInit, присвоенный IEnumerable<T> в качестве второго аргумента.

public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);

Параметры

addMethod
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства AddMethod.

arguments
IEnumerable<Expression>

Объект IEnumerable<T>, содержащий объекты Expression, которые следует задать для свойства Arguments.

Возвращаемое значение

Выражение ElementInit, содержащее свойства AddMethod и Arguments, для которых заданы указанные значения.

Исключения

Параметр addMethod или arguments имеет значение null.

Методу, представленному параметром addMethod, не присвоено имя "Добавить" (без учета регистра).

-или-

Метод, представленный параметром addMethod, не является методом экземпляра.

-или-

Число элементов в arguments не соответствует числу параметров метода, представленного параметром addMethod.

-или-

Свойство Type одного или нескольких элементов arguments невозможно присвоить типу соответствующего параметра метода, представленного addMethod.

Примеры

В следующем примере показано, как использовать ElementInit(MethodInfo, Expression[]) метод для создания ElementInit объекта , представляющего вызов Add метода для инициализации элемента коллекции словарей.

string tree = "maple";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create an ElementInit that represents calling
// Dictionary<int, string>.Add(tree.Length, tree).
System.Linq.Expressions.ElementInit elementInit =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree.Length),
        System.Linq.Expressions.Expression.Constant(tree));

Console.WriteLine(elementInit.ToString());

// This code produces the following output:
//
// Void Add(Int32, System.String)(5,"maple")

Комментарии

Параметр addMethod должен представлять метод экземпляра с именем Add (без учета регистра). Метод add должен иметь то же количество параметров, что и количество элементов в arguments. Свойство Type каждого элемента в arguments должно быть присвоено типу соответствующего параметра метода add, возможно, после кавыкания.

Ескерім

Элемент будет содержаться в кавычках, только если соответствующий параметр метода имеет тип Expression. Кавыкание означает, что элемент заключен в Quote узел. Результирующий узел является , UnaryExpression свойство которого Operand является элементом arguments.

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

ElementInit(MethodInfo, Expression[])

Исходный код:
ElementInit.cs
Исходный код:
ElementInit.cs
Исходный код:
ElementInit.cs

Создает ElementInit, присвоенный массиву значений в качестве второго аргумента.

public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, params System.Linq.Expressions.Expression[] arguments);

Параметры

addMethod
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства AddMethod.

arguments
Expression[]

Массив объектов Expression, которые следует задать для свойства Arguments.

Возвращаемое значение

Выражение ElementInit, содержащее свойства AddMethod и Arguments, для которых заданы указанные значения.

Исключения

Параметр addMethod или arguments имеет значение null.

Название метода, представленного параметром addMethod, отлично от "Add" (без учета регистра).

-или-

Метод, представленный параметром addMethod, не является методом экземпляра.

-или-

Число элементов, содержащихся в параметре arguments, отличается от числа параметров для метода, представленного параметром addMethod.

-или-

Свойство Type одного или нескольких элементов arguments невозможно присвоить типу соответствующего параметра метода, представленного addMethod.

Примеры

В следующем примере показано, как использовать ElementInit(MethodInfo, Expression[]) метод для создания ElementInit объекта , представляющего вызов Add метода для инициализации элемента коллекции словарей.

string tree = "maple";

System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add");

// Create an ElementInit that represents calling
// Dictionary<int, string>.Add(tree.Length, tree).
System.Linq.Expressions.ElementInit elementInit =
    System.Linq.Expressions.Expression.ElementInit(
        addMethod,
        System.Linq.Expressions.Expression.Constant(tree.Length),
        System.Linq.Expressions.Expression.Constant(tree));

Console.WriteLine(elementInit.ToString());

// This code produces the following output:
//
// Void Add(Int32, System.String)(5,"maple")

Комментарии

Параметр addMethod должен представлять метод экземпляра с именем Add (без учета регистра). Метод add должен иметь то же количество параметров, что и количество элементов в arguments. Свойство Type каждого элемента в arguments должно быть присвоено типу соответствующего параметра метода add, возможно, после кавыкания.

Ескерім

Элемент будет содержаться в кавычках, только если соответствующий параметр метода имеет тип Expression. Кавыкание означает, что элемент заключен в Quote узел. Результирующий узел является , UnaryExpression свойство которого Operand является элементом arguments.

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