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); } }