public MethodHandler(MethodInfo method, AbstractSqlAttribute sqlAttribute, DatabaseClientContext context)
        {
            Type resultType;

            _method       = method;
            _sqlAttribute = sqlAttribute;
            _isUpdate     = _sqlAttribute is SqlUpdateAttribute;
            _context      = context;

            var returnType = _method.ReturnType;

            if (returnType == typeof(Task))
            {
                resultType = typeof(void);
                _isAsync   = true;
            }
            else if (returnType.BaseType == typeof(Task) && returnType.IsGenericType)
            {
                resultType = returnType.GenericTypeArguments[0];
                _isAsync   = true;
            }
            else
            {
                resultType = returnType;
                _isAsync   = false;
            }

            _taskConverter = _context.TaskConverterFactory.CreateTaskConverter(resultType);

            _isResultEnumerable = resultType.IsGenericType &&
                                  resultType.Namespace == "System.Collections.Generic" &&
                                  resultType.Name == "IEnumerable`1";

            if (_isResultEnumerable)
            {
                _effectiveType = resultType.GenericTypeArguments[0];
            }
            else
            {
                _effectiveType = resultType;
            }
        }
 public DatabaseClient(DatabaseClientContext context)
 {
     _type    = typeof(T);
     _context = context;
 }