public override void AppendRead(ILGenerator generator, MessageField field) { generator.Emit(OpCodes.Ldloc_0); generator.Emit(OpCodes.Ldarg_1); field.AppendReadField(generator); generator.Emit(OpCodes.Call, Property.GetSetMethod()); }
public override void AppendRead(ILGenerator generator, MessageField field) { generator.Emit(OpCodes.Ldloc_0); generator.Emit(OpCodes.Ldarg_1); field.AppendReadField(generator); generator.Emit(OpCodes.Newobj, typeof(Nullable <>) .MakeGenericType(FieldType) .GetConstructor(new Type[] { FieldType })); generator.Emit(OpCodes.Call, Property.GetSetMethod()); }
public override void AppendRead(ILGenerator generator, MessageField field) { LocalBuilder count = generator.DeclareLocal(typeof(uint)); Label top = generator.DefineLabel(); Label next = generator.DefineLabel(); generator.Emit(OpCodes.Br_S, next); generator.Emit(OpCodes.Nop); generator.MarkLabel(top); generator.Emit(OpCodes.Ldloc_0); generator.Emit(OpCodes.Call, Property.GetGetMethod()); generator.Emit(OpCodes.Ldarg_1); field.AppendReadField(generator); generator.Emit(OpCodes.Callvirt, AddMethod); generator.MarkLabel(next); generator.Emit(OpCodes.Ldarg_1); generator.Emit(OpCodes.Call, typeof(MessageReader) .GetProperty("EndOfStream") .GetGetMethod()); generator.Emit(OpCodes.Brfalse_S, top); }