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,其 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 。 產生的節點是 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,其 AddMethodArguments 屬性設定為指定的值。

例外狀況

addMethodargumentsnull

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 專案數目相同的參數數目。 Typearguments 每個元素的 屬性都必須指派給 add 方法之對應參數的類型,可能是在引號之後。

注意

只有在對應的方法參數的類型 Expression 為 時,才會加上引號。 引號表示專案會包裝在節點中 Quote 。 產生的節點是 UnaryExpression ,其 Operand 屬性是 的 arguments 專案。

適用於