Expression.ElementInit 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建 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,其 AddMethod 和 Arguments 属性设置为指定值。
例外
addMethod
或 arguments
为 null
。
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 。 生成的节点是 , UnaryExpression 其 Operand 属性是 的 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,其 AddMethod 和 Arguments 属性设置为指定值。
例外
addMethod
或 arguments
为 null
。
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 。 生成的节点是 , UnaryExpression 其 Operand 属性是 的 arguments
元素。