private object FrameworkTypeRowDeserializer(ICqlRow row) { if (row.Columns.Count > 0) return Convert.ChangeType(row.Columns[0].ColumnValue, _type); return Convert.ChangeType(row.Key, _type); }
private object RowDeserializer(ICqlRow row, ObjectSerializerConventions conventions) { if (Type.GetTypeCode(_type) != TypeCode.Object) return FrameworkTypeRowDeserializer(row, conventions); if (_type.Name.Contains("AnonymousType")) return AnonymousRowDeserializer(row, conventions); var obj = Activator.CreateInstance(_type); foreach (var prop in _type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var name = prop.Name; if (conventions.KeyPropertyNames.Contains(name, conventions.AreKeyPropertyNamesCaseSensitive ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal)) { prop.SetValue(obj, Convert.ChangeType(row.Key, prop.PropertyType), null); continue; } if (row.Columns.Any(x => x.ColumnName == name)) prop.SetValue(obj, Convert.ChangeType(row[name], prop.PropertyType), null); } return obj; }
public object Deserialize(ICqlRow row, ObjectSerializerConventions conventions = null) { conventions = conventions ?? new ObjectSerializerConventions(); var func = GenerateRowDeserializer(); return func(row, conventions); }
private object AnonymousRowDeserializer(ICqlRow row) { var props = _type.GetProperties(BindingFlags.Public | BindingFlags.Instance); var args = new List<object>(); foreach (var prop in props) { var name = prop.Name; if (row.Columns.Any(x => x.ColumnName == name)) args.Add(Convert.ChangeType(row[name], prop.PropertyType)); } return Activator.CreateInstance(_type, args.ToArray()); }
private object AnonymousRowDeserializer(ICqlRow row) { var props = _type.GetProperties(BindingFlags.Public | BindingFlags.Instance); var args = new List <object>(); foreach (var prop in props) { var name = prop.Name; if (row.Columns.Any(x => x.ColumnName == name)) { args.Add(Convert.ChangeType(row[name], prop.PropertyType)); } } return(Activator.CreateInstance(_type, args.ToArray())); }
private object RowDeserializer(ICqlRow row) { if (Type.GetTypeCode(_type) != TypeCode.Object) return FrameworkTypeRowDeserializer(row); if (_type.Name.Contains("AnonymousType")) return AnonymousRowDeserializer(row); var obj = Activator.CreateInstance(_type); foreach (var prop in _type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var name = prop.Name; if (row.Columns.Any(x => x.ColumnName == name)) prop.SetValue(obj, Convert.ChangeType(row[name], prop.PropertyType), null); } return obj; }
private object AnonymousRowDeserializer(ICqlRow row, ObjectSerializerConventions conventions) { var props = _type.GetProperties(BindingFlags.Public | BindingFlags.Instance); var args = new List<object>(); foreach (var prop in props) { var name = prop.Name; if (conventions.KeyPropertyNames.Contains(name, conventions.AreKeyPropertyNamesCaseSensitive ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal)) { args.Add(Convert.ChangeType(row.Key, prop.PropertyType)); continue; } if (row.Columns.Any(x => x.ColumnName == name)) args.Add(Convert.ChangeType(row[name], prop.PropertyType)); } return Activator.CreateInstance(_type, args.ToArray()); }
public object Deserialize(ICqlRow row) { var func = GenerateRowDeserializer(); return(func(row)); }
public object Deserialize(ICqlRow row) { var func = GenerateRowDeserializer(); return func(row); }