Expression.MemberInit 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
새 개체를 만들고 개체의 속성을 초기화하는 식을 나타냅니다.
오버로드
| MemberInit(NewExpression, IEnumerable<MemberBinding>) |
새 개체를 만들고 개체의 속성을 초기화하는 식을 나타냅니다. |
| MemberInit(NewExpression, MemberBinding[]) |
MemberInitExpression을 만듭니다. |
MemberInit(NewExpression, IEnumerable<MemberBinding>)
- Source:
- MemberInitExpression.cs
- Source:
- MemberInitExpression.cs
- Source:
- 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인 경우
bindings에 있는 요소의 Member 속성이 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 의 속성은 의 newExpression속성과 Type 같습니다.
적용 대상
MemberInit(NewExpression, MemberBinding[])
- Source:
- MemberInitExpression.cs
- Source:
- MemberInitExpression.cs
- Source:
- 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인 경우
bindings에 있는 요소의 Member 속성이 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 의 속성은 의 newExpression속성과 Type 같습니다.