語言

MemberInitExpression 類別

定義

代表呼叫建構子並初始化新物件的一個或多個成員。

public ref class MemberInitExpression sealed : System::Linq::Expressions::Expression
public sealed class MemberInitExpression : System.Linq.Expressions.Expression
type MemberInitExpression = class
    inherit Expression
Public NotInheritable Class MemberInitExpression
Inherits Expression
繼承
MemberInitExpression

範例

以下範例會產生 MemberInitExpression 一個,代表新物件兩個成員的初始化。

class Animal
{
    public string Species {get; set;}
    public int Age {get; set;}
}

public static void CreateMemberInitExpression()
{
    System.Linq.Expressions.NewExpression newAnimal =
        System.Linq.Expressions.Expression.New(typeof(Animal));

    System.Reflection.MemberInfo speciesMember =
        typeof(Animal).GetMember("Species")[0];
    System.Reflection.MemberInfo ageMember =
        typeof(Animal).GetMember("Age")[0];

    // Create a MemberBinding object for each member
    // that you want to initialize.
    System.Linq.Expressions.MemberBinding speciesMemberBinding =
        System.Linq.Expressions.Expression.Bind(
            speciesMember,
            System.Linq.Expressions.Expression.Constant("horse"));
    System.Linq.Expressions.MemberBinding ageMemberBinding =
        System.Linq.Expressions.Expression.Bind(
            ageMember,
            System.Linq.Expressions.Expression.Constant(12));

    // Create a MemberInitExpression that represents initializing
    // two members of the 'Animal' class.
    System.Linq.Expressions.MemberInitExpression memberInitExpression =
        System.Linq.Expressions.Expression.MemberInit(
            newAnimal,
            speciesMemberBinding,
            ageMemberBinding);

    Console.WriteLine(memberInitExpression.ToString());

    // This code produces the following output:
    //
    // new Animal() {Species = "horse", Age = 12}
}
Class Animal
    Public Species As String
    Public Age As Integer
End Class

Shared Sub CreateMemberInitExpression()
    Dim newAnimal As System.Linq.Expressions.NewExpression = _
        System.Linq.Expressions.Expression.[New](Type.GetType("ExpressionVB.MemberInitExample+Animal"))

    Dim speciesMember As System.Reflection.MemberInfo = _
        Type.GetType("ExpressionVB.MemberInitExample+Animal").GetMember("Species")(0)
    Dim ageMember As System.Reflection.MemberInfo = _
        Type.GetType("ExpressionVB.MemberInitExample+Animal").GetMember("Age")(0)

    ' Create a MemberBinding object for each member
    ' that you want to initialize.
    Dim speciesMemberBinding As System.Linq.Expressions.MemberBinding = _
        System.Linq.Expressions.Expression.Bind( _
            speciesMember, _
            System.Linq.Expressions.Expression.Constant("horse"))
    Dim ageMemberBinding As System.Linq.Expressions.MemberBinding = _
        System.Linq.Expressions.Expression.Bind( _
            ageMember, _
            System.Linq.Expressions.Expression.Constant(12))

    ' Create a MemberInitExpression that represents initializing
    ' two members of the 'Animal' class.
    Dim memberInitExpression As System.Linq.Expressions.MemberInitExpression = _
        System.Linq.Expressions.Expression.MemberInit( _
            newAnimal, _
            speciesMemberBinding, _
            ageMemberBinding)

    Console.WriteLine(memberInitExpression.ToString())

    ' This code produces the following output:
    '
    ' new Animal() {Species = "horse", Age = 12}
End Sub

備註

利用 MemberInit 工廠方法來建立一個 MemberInitExpression。

a NodeType 的性質值MemberInitExpression為 MemberInit。

屬性

名稱 Description
Bindings

取得描述如何初始化新建立物件成員的綁定。

CanReduce

會得到一個值,表示表達式樹節點是否可以被簡化。

NewExpression

取得代表建構子呼叫的表達式。

NodeType

回傳此表達式的節點類型。 當覆寫此方法時,擴充節點應該會回傳 Extension 。

NodeType

取得節點 Expression類型。

(繼承來源 Expression)
Type

取得此 Expression 表達式的靜態型態。

Type

取得此 Expression 表達式的靜態型態。

(繼承來源 Expression)

方法

名稱 Description
Accept(ExpressionVisitor)

針對此節點類型的特定訪問方法進行派遣。 例如,稱為 MethodCallExpressionVisitMethodCall(MethodCallExpression)。

(繼承來源 Expression)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type。

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
Reduce()

將 簡化 MemberInitExpression 為更簡單的表達式。

ReduceAndCheck()

將此節點簡化為更簡單的表達式。 如果 CanReduce 回傳為真,則應回傳一個有效的表達式。 此方法可返回另一個必須被約簡的節點。

(繼承來源 Expression)
ReduceExtensions()

將表達式簡化為已知節點型別(非擴充節點),或僅回傳已是已知型別的表達式。

(繼承來源 Expression)
ToString()

回傳 的文字表示 Expression。

(繼承來源 Expression)
Update(NewExpression, IEnumerable<MemberBinding>)

會建立一個新的表達式,類似這個,但使用提供的子節點。 如果所有子節點相同,則會回傳這個表達式。

VisitChildren(ExpressionVisitor)

將節點簡化,然後呼叫訪客代理處理簡化表達式。 若節點不可約,方法會拋出例外。

(繼承來源 Expression)

適用於