private void GenerateLoadSimpleValuesByIndex() { var method = new MethodDefinition("LoadSimpleValuesByIndex", MethodAttr, _handler.VoidType); method.Overrides.Add(_handler.LoadSimpleValuesByIndex); method.Parameters.Add(new ParameterDefinition("o", ParameterAttributes.None, _handler.ObjectType)); method.Parameters.Add(new ParameterDefinition("dr", ParameterAttributes.None, _handler.DataReaderInterface)); var processor = new IlBuilder(method.Body); // User u = (User)o; processor.DeclareLocal(_model); processor.LoadArg(1).Cast(_model).SetLoc(0); // set values int n = 0; foreach (var f in _info.SimpleMembers) { processor.LoadLoc(0); if (f.Is.AllowNull) { processor.LoadArg(0); } processor.LoadArg(2).LoadInt(n); var mi1 = Helper.GetMethodInfo(f.MemberType); if (f.Is.AllowNull || mi1 == null) { processor.CallVirtual(_handler.GetDataReaderMethodInt()); if (f.Is.AllowNull) { SetSecendArgForGetNullable(f, processor); processor.Call(_handler.ModelHandlerBaseTypeGetNullable); } // cast or unbox processor.CastOrUnbox(_handler.Import(f.MemberType), _handler); } else { processor.CallVirtual(_handler.Import(mi1)); } processor.SetMember(f, _handler); n++; } processor.Return(); processor.Append(); _result.Methods.Add(method); }