private async ValueTask ExecuteResolverPipelineAsync()
        {
            await _context.ResolverPipeline(_context).ConfigureAwait(false);

            switch (_context.Result)
            {
            case IQueryable queryable:
                _context.Result = await Task.Run(() =>
                {
                    var items = new List <object?>();
                    foreach (object?o in queryable)
                    {
                        items.Add(o);
                    }
                    return(items);
                });

                break;

            case IError error:
                _context.ReportError(error);
                _context.Result = null;
                break;

            case IEnumerable <IError> errors:
                foreach (IError error in errors)
                {
                    _context.ReportError(error);
                }
                _context.Result = null;
                break;
            }
        }
示例#2
0
        private async ValueTask ExecuteResolverPipelineAsync(CancellationToken cancellationToken)
        {
            await _context.ResolverPipeline(_context).ConfigureAwait(false);

            switch (_context.Result)
            {
            case IExecutable executable:
                _context.Result = await executable
                                  .ToListAsync(cancellationToken)
                                  .ConfigureAwait(false);

                break;

            case IQueryable queryable:
                _context.Result = await Task.Run(() =>
                {
                    var items = new List <object?>();
                    foreach (object?o in queryable)
                    {
                        items.Add(o);

                        if (cancellationToken.IsCancellationRequested)
                        {
                            break;
                        }
                    }
                    return(items);
                }, cancellationToken);

                break;

            case IError error:
                _context.ReportError(error);
                _context.Result = null;
                break;

            case IEnumerable <IError> errors:
                foreach (IError error in errors)
                {
                    _context.ReportError(error);
                }
                _context.Result = null;
                break;
            }
        }