Поделиться через


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);
public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
static member ElementInit : System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.ElementInit
Public Shared Function ElementInit (addMethod As MethodInfo, arguments As IEnumerable(Of Expression)) As ElementInit

Параметры

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")
Dim tree As String = "maple"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create an ElementInit that represents calling
' Dictionary(Of Integer, String).Add(tree.Length, tree).
Dim elementInit As System.Linq.Expressions.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, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.ElementInit ElementInit (System.Reflection.MethodInfo addMethod, params System.Linq.Expressions.Expression[] arguments);
static member ElementInit : System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.ElementInit
Public Shared Function ElementInit (addMethod As MethodInfo, ParamArray arguments As Expression()) As ElementInit

Параметры

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")
Dim tree As String = "maple"

Dim addMethod As System.Reflection.MethodInfo = _
    Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetMethod("Add")

' Create an ElementInit that represents calling
' Dictionary(Of Integer, String).Add(tree.Length, tree).
Dim elementInit As System.Linq.Expressions.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.

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