public EmitStfld ( System field ) : void | ||
field | System | |
Результат | void |
public override void StoreValue( TracingILGenerator il ) { il.TraceWriteLine( "// Stor->: {0}", this ); if ( this._instance != null ) { this._instance.LoadValue( il, this._instance.ContextType.GetIsValueType() ); } this._value.LoadValue( il, false ); il.EmitStfld( this._field ); il.TraceWriteLine( "// ->Stor: {0}", this ); }
/// <summary> /// Emits appropriate storing member instructions. /// </summary> /// <param name="il">IL generator to be emitted to.</param> /// <param name="member"><see cref="MemberInfo"/> to be stored.</param> public static void EmitStoreValue( TracingILGenerator il, MemberInfo member ) { Contract.Requires( il != null ); Contract.Requires( member != null ); var asProperty = member as PropertyInfo; if ( asProperty != null ) { if ( !asProperty.CanWrite ) { throw new SerializationException( String.Format( CultureInfo.CurrentCulture, "Cannot set value to '{0}.{1}' property.", asProperty.DeclaringType, asProperty.Name ) ); } il.EmitSetProperty( asProperty ); } else { Contract.Assert( member is FieldInfo, member.ToString() + ":" + member.MemberType ); var asField = member as FieldInfo; if ( asField.IsInitOnly ) { throw new SerializationException( String.Format( CultureInfo.CurrentCulture, "Cannot set value to '{0}.{1}' field.", asField.DeclaringType, asField.Name ) ); } il.EmitStfld( asField ); } }