Expression.ElementInit 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立 ElementInit。
多載
ElementInit(MethodInfo, IEnumerable<Expression>) |
指定 ElementInit 做為第二個引數,建立 IEnumerable<T>。 |
ElementInit(MethodInfo, Expression[]) |
指定值陣列做為第二個引數,建立 ElementInit。 |
ElementInit(MethodInfo, IEnumerable<Expression>)
指定 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
項目數目相同。 Type中arguments
每個元素的 屬性都必須指派給add方法的對應參數類型,可能是在引號之後。
注意
只有在對應的方法參數的類型 Expression為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpression 其 Operand 屬性是 的 arguments
元素。
適用於
ElementInit(MethodInfo, Expression[])
指定值陣列做為第二個引數,建立 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 所表示之方法的參數數目不同。
-或-
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
項目數目相同。 Type中arguments
每個元素的 屬性都必須指派給add方法的對應參數類型,可能是在引號之後。
注意
只有在對應的方法參數的類型 Expression為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpression 其 Operand 屬性是 的 arguments
元素。