// Token: 0x0600006B RID: 107 RVA: 0x00003644 File Offset: 0x00001844 private static Dictionary <string, PropertyInfo> GetFieldnameFromCache <T>() { int hashCode = typeof(T).GetHashCode(); if (!SqlDataReaderEx.propInfoCache.ContainsKey(hashCode)) { SqlDataReaderEx.propInfoCache.Add(hashCode, SqlDataReaderEx.GetFieldname <T>()); } return(SqlDataReaderEx.propInfoCache[hashCode]); }
// Token: 0x0600006A RID: 106 RVA: 0x000033B8 File Offset: 0x000015B8 public static T To <T>(this SQLiteDataReader reader) where T : new() { if (reader == null || !reader.HasRows) { return(default(T)); } T t = Activator.CreateInstance <T>(); Dictionary <string, PropertyInfo> fieldnameFromCache = SqlDataReaderEx.GetFieldnameFromCache <T>(); for (int i = 0; i < reader.FieldCount; i++) { string key = reader.GetName(i).ToLower(); if (fieldnameFromCache.ContainsKey(key)) { PropertyInfo propertyInfo = fieldnameFromCache[key]; if (propertyInfo.PropertyType == typeof(string)) { object obj = null; string @string = reader.GetString(i); propertyInfo.SetValue(t, Convert.IsDBNull(@string) ? obj : @string, null); } else if (propertyInfo.PropertyType == typeof(int)) { object obj = 0; int @int = reader.GetInt32(i); propertyInfo.SetValue(t, Convert.IsDBNull(@int) ? obj : @int, null); } else if (propertyInfo.PropertyType == typeof(decimal)) { object obj = 0m; decimal @decimal = reader.GetDecimal(i); propertyInfo.SetValue(t, Convert.IsDBNull(@decimal) ? obj : @decimal, null); } else if (propertyInfo.PropertyType == typeof(double)) { object obj = 0.0; double @double = reader.GetDouble(i); propertyInfo.SetValue(t, Convert.IsDBNull(@double) ? obj : @double, null); } else if (propertyInfo.PropertyType == typeof(DateTime)) { object obj = default(DateTime); string string2 = reader.GetString(i); propertyInfo.SetValue(t, Convert.IsDBNull(string2) ? obj : string2, null); } else if (propertyInfo.PropertyType == typeof(bool)) { object obj = false; bool boolean = reader.GetBoolean(i); propertyInfo.SetValue(t, Convert.IsDBNull(boolean) ? obj : boolean, null); } else { object obj = null; object value = reader.GetValue(i); propertyInfo.SetValue(t, Convert.IsDBNull(value) ? obj : value, null); } } } return(t); }