get { return member; }
}
- internal MemberBinding (MemberBindingType binding_type, MemberInfo member)
+ protected MemberBinding (MemberBindingType binding_type, MemberInfo member)
{
this.binding_type = binding_type;
this.member = member;
internal LocalBuilder EmitLoadMember (EmitContext ec, LocalBuilder local)
{
- ec.EmitLoad (local);
+ ec.EmitLoadSubject (local);
- switch (member.MemberType) {
- case MemberTypes.Property:
- return EmitLoadProperty (ec, (PropertyInfo) member);
- case MemberTypes.Field:
- return EmitLoadField (ec, (FieldInfo) member);
- default:
- throw new NotSupportedException (member.MemberType.ToString ());
- }
+ return member.OnFieldOrProperty<LocalBuilder> (
+ field => EmitLoadField (ec, field),
+ prop => EmitLoadProperty (ec, prop));
}
LocalBuilder EmitLoadProperty (EmitContext ec, PropertyInfo property)