Поделиться через


Expression.MemberInit Метод

Определение

Представляет выражение, создающее новый объект и инициализирующее свойство объекта.

Перегрузки

MemberInit(NewExpression, IEnumerable<MemberBinding>)

Представляет выражение, создающее новый объект и инициализирующее свойство объекта.

MemberInit(NewExpression, MemberBinding[])

Создает объект MemberInitExpression.

MemberInit(NewExpression, IEnumerable<MemberBinding>)

Исходный код:
MemberInitExpression.cs
Исходный код:
MemberInitExpression.cs
Исходный код:
MemberInitExpression.cs

Представляет выражение, создающее новый объект и инициализирующее свойство объекта.

public:
 static System::Linq::Expressions::MemberInitExpression ^ MemberInit(System::Linq::Expressions::NewExpression ^ newExpression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::MemberBinding ^> ^ bindings);
public static System.Linq.Expressions.MemberInitExpression MemberInit (System.Linq.Expressions.NewExpression newExpression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.MemberBinding> bindings);
static member MemberInit : System.Linq.Expressions.NewExpression * seq<System.Linq.Expressions.MemberBinding> -> System.Linq.Expressions.MemberInitExpression
Public Shared Function MemberInit (newExpression As NewExpression, bindings As IEnumerable(Of MemberBinding)) As MemberInitExpression

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.

bindings
IEnumerable<MemberBinding>

IEnumerable<T>, содержащий все объекты MemberBinding, используемые для заполнения коллекции Bindings.

Возвращаемое значение

Выражение MemberInitExpression со свойствомNodeType, равным MemberInit, и свойствами NewExpression и Bindings, для которых заданы указанные значения.

Исключения

Параметр newExpression или bindings имеет значение null.

Свойство Member элемента bindings не представляет элемент типа поля или свойства, который представляет newExpression.Type.

Примеры

В следующем примере показано выражение, которое создает новый объект и инициализирует свойство объекта .


// Add the following directive to your file:
// using System.Linq.Expressions;

class TestMemberInitClass
{
    public int sample { get; set; }
}

static void MemberInit()
{
    // This expression creates a new TestMemberInitClass object
    // and assigns 10 to its sample property.
    Expression testExpr = Expression.MemberInit(
        Expression.New(typeof(TestMemberInitClass)),
        new List<MemberBinding>() {
            Expression.Bind(typeof(TestMemberInitClass).GetMember("sample")[0], Expression.Constant(10))
        }
    );

    // The following statement first creates an expression tree,
    // then compiles it, and then runs it.
    var test = Expression.Lambda<Func<TestMemberInitClass>>(testExpr).Compile()();
    Console.WriteLine(test.sample);
}

// This code example produces the following output:
//
// 10
' Add the following directive to your file:
' Imports System.Linq.Expressions  

Class TestMemberInitClass
    Public Property Sample As Integer
End Class

Sub MemberInit()
    ' This expression creates a new TestMemberInitClass object
    ' and assigns 10 to its Sample property.
    Dim testExpr As Expression = Expression.MemberInit(
        Expression.[New](GetType(TestMemberInitClass)),
        New List(Of MemberBinding)() From {
            Expression.Bind(GetType(TestMemberInitClass).GetMember("Sample")(0), Expression.Constant(10))
        }
    )

    ' The following statement first creates an expression tree,
    ' then compiles it, and then runs it.
    Dim test = Expression.Lambda(Of Func(Of TestMemberInitClass))(testExpr).Compile()()
    Console.WriteLine(test.Sample)
End Sub

' This code example produces the following output:
'
' 10

Комментарии

Свойство Type результирующего MemberInitExpression объекта равно свойству Type объекта newExpression.

Применяется к

MemberInit(NewExpression, MemberBinding[])

Исходный код:
MemberInitExpression.cs
Исходный код:
MemberInitExpression.cs
Исходный код:
MemberInitExpression.cs

Создает объект MemberInitExpression.

public:
 static System::Linq::Expressions::MemberInitExpression ^ MemberInit(System::Linq::Expressions::NewExpression ^ newExpression, ... cli::array <System::Linq::Expressions::MemberBinding ^> ^ bindings);
public static System.Linq.Expressions.MemberInitExpression MemberInit (System.Linq.Expressions.NewExpression newExpression, params System.Linq.Expressions.MemberBinding[] bindings);
static member MemberInit : System.Linq.Expressions.NewExpression * System.Linq.Expressions.MemberBinding[] -> System.Linq.Expressions.MemberInitExpression
Public Shared Function MemberInit (newExpression As NewExpression, ParamArray bindings As MemberBinding()) As MemberInitExpression

Параметры

newExpression
NewExpression

Объект NewExpression, который следует задать в качестве значения свойства NewExpression.

bindings
MemberBinding[]

Массив объектов MemberBinding для заполнения коллекции Bindings.

Возвращаемое значение

Выражение MemberInitExpression со свойствомNodeType, равным MemberInit, и свойствами NewExpression и Bindings, для которых заданы указанные значения.

Исключения

Параметр newExpression или bindings имеет значение null.

Свойство Member элемента bindings не представляет элемент типа поля или свойства, который представляет newExpression.Type.

Примеры

В следующем примере показано, как использовать MemberInit(NewExpression, MemberBinding[]) метод для создания 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

Комментарии

Свойство Type результирующего MemberInitExpression объекта равно свойству Type объекта newExpression.

Применяется к