Expression.ElementInit 方法

定义

创建 ElementInit

重载

ElementInit(MethodInfo, IEnumerable<Expression>)

在给定 ElementInit 作为第二个参数的情况下,创建一个 IEnumerable<T>

ElementInit(MethodInfo, Expression[])

在给定值数组作为第二个自变量的情况下,创建一个 ElementInit

ElementInit(MethodInfo, IEnumerable<Expression>)

Source:
ElementInit.cs
Source:
ElementInit.cs
Source:
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,其 AddMethodArguments 属性设置为指定值。

例外

addMethodargumentsnull

addMethod 表示的方法的名称不是“Add”(不区分大小写)。

- 或 -

addMethod 表示的方法不是实例方法。

- 或 -

arguments 不包含与 addMethod 表示的方法的参数数目相同的元素数目。

- 或 -

arguments 的一个或多个元素的 Type 属性不能赋给 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元素数相同。 中Typearguments每个元素的 属性必须可分配给 add 方法的相应参数的类型,可能在引用之后。

注意

仅当相应的方法参数的类型为 Expression时,才会对元素进行引号。 引用表示元素包装在节点中 Quote 。 生成的节点是 , UnaryExpressionOperand 属性是 的 arguments元素。

适用于

ElementInit(MethodInfo, Expression[])

Source:
ElementInit.cs
Source:
ElementInit.cs
Source:
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,其 AddMethodArguments 属性设置为指定值。

例外

addMethodargumentsnull

addMethod 表示的方法未命名为"Add"(不区分大小写)。

- 或 -

addMethod 表示的方法不是实例方法。

- 或 -

arguments 包含的元素数量与 addMethod 所表示的方法的参数数量不同。

- 或 -

arguments 的一个或多个元素的 Type 属性不能赋给 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元素数相同。 中Typearguments每个元素的 属性必须可分配给 add 方法的相应参数的类型,可能在引用之后。

注意

仅当相应的方法参数的类型为 Expression时,才会对元素进行引号。 引用表示元素包装在节点中 Quote 。 生成的节点是 , UnaryExpressionOperand 属性是 的 arguments元素。

适用于