public static void Set <TEntity, TEnum, TValue>(this FlatDataWrapper <TEntity> wrapper, TEnum valueName, TValue valueType)
            where TEntity : class
        {
            valueName.CheckValueType <TEnum, TValue>();
            string key = valueName.ToString();

            wrapper.SetValue(key, valueType);
        }
        public static void Set <TEntity, TAttribute, TResult>(this FlatDataWrapper <TEntity> wrapper, TResult model)
            where TEntity : class
            where TAttribute : Attribute, IEnumType
            where TResult : class, new()
        {
            foreach (var propertyInfo in model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                var valueTypeAttribute = propertyInfo.GetCustomAttribute <TAttribute>();
                var valueType          = valueTypeAttribute.Type;

                valueType.CheckValueType(propertyInfo.PropertyType);
                string key = valueType.ToString();

                wrapper.SetValue(key, propertyInfo.GetValue(model));
            }
        }