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());
		}
Ejemplo n.º 5
0
        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);
		}