public override void LoadValue( TracingILGenerator il, bool shouldBeAddress ) { il.TraceWriteLine( "// Load->: {0}", this ); if ( this._instance != null ) { this._instance.LoadValue( il, this._instance.ContextType.GetIsValueType() ); } if ( shouldBeAddress ) { il.EmitLdflda( this._field ); } else { il.EmitLdfld( this._field ); } il.TraceWriteLine( "// ->Load: {0}", this ); }
/// <summary> /// Emits appropriate loading member instructions. /// </summary> /// <param name="il">IL generator to be emitted to.</param> /// <param name="member"><see cref="MemberInfo"/> to be loaded.</param> public static void EmitLoadValue( TracingILGenerator il, MemberInfo member ) { Contract.Requires( il != null ); Contract.Requires( member != null ); var asProperty = member as PropertyInfo; if ( asProperty != null ) { il.EmitGetProperty( asProperty ); } else { Contract.Assert( member is FieldInfo, member.ToString() + ":" + member.MemberType ); il.EmitLdfld( member as FieldInfo ); } }