scripts
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
|
||||
namespace System.Linq.Expressions
|
||||
{
|
||||
/// <summary>Represents accessing a field or property.</summary>
|
||||
// Token: 0x02000027 RID: 39
|
||||
public sealed class MemberExpression : Expression
|
||||
{
|
||||
// Token: 0x06000223 RID: 547 RVA: 0x0000BA70 File Offset: 0x00009C70
|
||||
internal MemberExpression(Expression expression, MemberInfo member, Type type)
|
||||
: base(ExpressionType.MemberAccess, type)
|
||||
{
|
||||
this.expression = expression;
|
||||
this.member = member;
|
||||
}
|
||||
|
||||
/// <summary>Gets the containing object of the field or property.</summary>
|
||||
/// <returns>An <see cref="T:System.Linq.Expressions.Expression" /> that represents the containing object of the field or property.</returns>
|
||||
// Token: 0x17000026 RID: 38
|
||||
// (get) Token: 0x06000224 RID: 548 RVA: 0x0000BA8C File Offset: 0x00009C8C
|
||||
public Expression Expression
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.expression;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Gets the field or property to be accessed.</summary>
|
||||
/// <returns>The <see cref="T:System.Reflection.MemberInfo" /> that represents the field or property to be accessed.</returns>
|
||||
// Token: 0x17000027 RID: 39
|
||||
// (get) Token: 0x06000225 RID: 549 RVA: 0x0000BA94 File Offset: 0x00009C94
|
||||
public MemberInfo Member
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.member;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000226 RID: 550 RVA: 0x0000BA9C File Offset: 0x00009C9C
|
||||
internal override void Emit(EmitContext ec)
|
||||
{
|
||||
this.member.OnFieldOrProperty(delegate(FieldInfo field)
|
||||
{
|
||||
this.EmitFieldAccess(ec, field);
|
||||
}, delegate(PropertyInfo prop)
|
||||
{
|
||||
this.EmitPropertyAccess(ec, prop);
|
||||
});
|
||||
}
|
||||
|
||||
// Token: 0x06000227 RID: 551 RVA: 0x0000BAE0 File Offset: 0x00009CE0
|
||||
private void EmitPropertyAccess(EmitContext ec, PropertyInfo property)
|
||||
{
|
||||
MethodInfo getMethod = property.GetGetMethod(true);
|
||||
if (!getMethod.IsStatic)
|
||||
{
|
||||
ec.EmitLoadSubject(this.expression);
|
||||
}
|
||||
ec.EmitCall(getMethod);
|
||||
}
|
||||
|
||||
// Token: 0x06000228 RID: 552 RVA: 0x0000BB14 File Offset: 0x00009D14
|
||||
private void EmitFieldAccess(EmitContext ec, FieldInfo field)
|
||||
{
|
||||
if (!field.IsStatic)
|
||||
{
|
||||
ec.EmitLoadSubject(this.expression);
|
||||
ec.ig.Emit(OpCodes.Ldfld, field);
|
||||
}
|
||||
else
|
||||
{
|
||||
ec.ig.Emit(OpCodes.Ldsfld, field);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040000B0 RID: 176
|
||||
private Expression expression;
|
||||
|
||||
// Token: 0x040000B1 RID: 177
|
||||
private MemberInfo member;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user