public async Task InvokeAsync(IMiddlewareContext context)
            {
                TDataLoader dataloader = context.DataLoader <TDataLoader>();

                await _next(context).ConfigureAwait(false);

                if (context.Result is IReadOnlyCollection <TKey> values)
                {
                    IReadOnlyList <TValue[]> data = await dataloader
                                                    .LoadAsync(values, context.RequestAborted)
                                                    .ConfigureAwait(false);

                    var result = new HashSet <object>();
                    for (var m = 0; m < data.Count; m++)
                    {
                        for (var n = 0; n < data[m].Length; n++)
                        {
                            result.Add(data[m][n] !);
                        }
                    }

                    context.Result = result;
                }
                else if (context.Result is TKey value)
                {
                    context.Result = await dataloader
                                     .LoadAsync(value, context.RequestAborted)
                                     .ConfigureAwait(false);
                }
            }
            public async Task InvokeAsync(IMiddlewareContext context)
            {
                TDataLoader dataloader = context.DataLoader <TDataLoader>();

                await _next(context).ConfigureAwait(false);

                if (context.Result is IReadOnlyCollection <TKey> values)
                {
                    context.Result = await dataloader
                                     .LoadAsync(values, context.RequestAborted);
                }
                else if (context.Result is TKey value)
                {
                    context.Result = await dataloader.LoadAsync(value, context.RequestAborted);
                }
            }