void WriteValue(FakeStruct fake, int offset, DataFieldInfo info, object instance) { if (info.DBType < 6) { fake[offset] = Convert.ToInt32(info.field.GetValue(instance)); } else if (info.DBType == DataType2.Float) { fake.SetFloat(offset, Convert.ToSingle(info.field.GetValue(instance))); } else if (info.DBType < 8) { fake.SetInt64(offset, Convert.ToInt64(info.field.GetValue(instance))); } else if (info.DBType == DataType2.Double) { fake.SetDouble(offset, Convert.ToDouble(info.field.GetValue(instance))); } else if (info.DBType == DataType2.Decimal) { fake.SetDecimal(offset, Convert.ToDecimal(info.field.GetValue(instance))); } else if (info.DBType == DataType2.Boolean) { fake[offset] = Convert.ToInt32(info.field.GetValue(instance)); } else if (info.DBType == 12) { WriteStruct(fake, offset, info, info.field.GetValue(instance)); } }
void WriteValue(FakeStruct fake, int offset, DataFieldInfo info, IntPtr ptr) { if (info.DBType < 6) { if (info.DataLength == 1) { unsafe { fake[offset] = *(byte *)(ptr + info.MemOffset); } } else if (info.DataLength == 2) { unsafe { fake[offset] = *(Int16 *)(ptr + info.MemOffset); } } else { unsafe { fake[offset] = *(Int32 *)(ptr + info.MemOffset); } } } else if (info.DBType == DataType2.Float) { unsafe { fake.SetFloat(offset, *(float *)(ptr + info.MemOffset)); } } else if (info.DBType < 8) { unsafe { fake.SetInt64(offset, *(Int64 *)(ptr + info.MemOffset)); } } else if (info.DBType == DataType2.Double) { unsafe { fake.SetDouble(offset, *(Double *)(ptr + info.MemOffset)); } } else if (info.DBType == DataType2.Decimal) { unsafe { fake.SetDecimal(offset, *(Decimal *)(ptr + info.MemOffset)); } } else if (info.DBType == DataType2.Boolean) { unsafe { fake[offset] = *(byte *)(ptr + info.MemOffset); } } else if (info.DBType == 12) { WriteStruct(fake, offset, info, ptr + info.MemOffset); } }