scripts
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
|
||||
namespace System.Linq.Expressions
|
||||
{
|
||||
/// <summary>Represents initializing a field or property of a newly created object.</summary>
|
||||
// Token: 0x02000024 RID: 36
|
||||
public sealed class MemberAssignment : MemberBinding
|
||||
{
|
||||
// Token: 0x06000216 RID: 534 RVA: 0x0000B888 File Offset: 0x00009A88
|
||||
internal MemberAssignment(MemberInfo member, Expression expression)
|
||||
: base(MemberBindingType.Assignment, member)
|
||||
{
|
||||
this.expression = expression;
|
||||
}
|
||||
|
||||
/// <summary>Gets the expression to assign to the field or property.</summary>
|
||||
/// <returns>The <see cref="T:System.Linq.Expressions.Expression" /> that represents the value to assign to the field or property.</returns>
|
||||
// Token: 0x17000023 RID: 35
|
||||
// (get) Token: 0x06000217 RID: 535 RVA: 0x0000B89C File Offset: 0x00009A9C
|
||||
public Expression Expression
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.expression;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000218 RID: 536 RVA: 0x0000B8A4 File Offset: 0x00009AA4
|
||||
internal override void Emit(EmitContext ec, LocalBuilder local)
|
||||
{
|
||||
base.Member.OnFieldOrProperty(delegate(FieldInfo field)
|
||||
{
|
||||
this.EmitFieldAssignment(ec, field, local);
|
||||
}, delegate(PropertyInfo prop)
|
||||
{
|
||||
this.EmitPropertyAssignment(ec, prop, local);
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x06000219 RID: 537 RVA: 0x0000B8F0 File Offset: 0x00009AF0
|
||||
private void EmitFieldAssignment(EmitContext ec, FieldInfo field, LocalBuilder local)
|
||||
{
|
||||
ec.EmitLoadSubject(local);
|
||||
this.expression.Emit(ec);
|
||||
ec.ig.Emit(OpCodes.Stfld, field);
|
||||
}
|
||||
|
||||
// Token: 0x0600021A RID: 538 RVA: 0x0000B924 File Offset: 0x00009B24
|
||||
private void EmitPropertyAssignment(EmitContext ec, PropertyInfo property, LocalBuilder local)
|
||||
{
|
||||
MethodInfo setMethod = property.GetSetMethod(true);
|
||||
if (setMethod == null)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
ec.EmitLoadSubject(local);
|
||||
this.expression.Emit(ec);
|
||||
ec.EmitCall(setMethod);
|
||||
}
|
||||
|
||||
// Token: 0x040000A9 RID: 169
|
||||
private Expression expression;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user