Бөлісу құралы:


Expression.ElementInit Метод

Определение

Создает объект ElementInit.

Перегрузки

Имя Описание
ElementInit(MethodInfo, IEnumerable<Expression>)

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

ElementInit(MethodInfo, Expression[])

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

ElementInit(MethodInfo, IEnumerable<Expression>)

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

Создает объект , заданный ElementInitIEnumerable<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 представляющий, не называется 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 (без учета регистра). Метод добавления должен иметь то же количество параметров, что и количество элементов в arguments. Свойство Type каждого элемента должно arguments быть присвоено типу соответствующего параметра метода добавления, возможно, после кавыка.

Замечание

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

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

ElementInit(MethodInfo, Expression[])

Исходный код:
ElementInit.cs
Исходный код:
ElementInit.cs
Исходный код:
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, не является методом экземпляра.

–или–

Аргументы не содержат то же количество элементов, что и число параметров для метода, представляющего 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 (без учета регистра). Метод добавления должен иметь то же количество параметров, что и количество элементов в arguments. Свойство Type каждого элемента должно arguments быть присвоено типу соответствующего параметра метода добавления, возможно, после кавыка.

Замечание

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

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