public DataLoaderResolver(Func <TSource, TKey> keySelector, DataLoaderResolverDelegate <TKey, TReturn> resolverDelegate)
 {
     _keySelector         = keySelector;
     _captureFieldContext = true;
     _loaderContext       = new DataLoaderContext();
     _loader = new DataLoader <TKey, TReturn>(ids => resolverDelegate(ids, _lastContext.Value), _loaderContext);
 }
 /// <summary>
 /// Configures a field to use a <see cref="DataLoaderResolver"/> to resolve batches.
 /// </summary>
 public static FieldBuilder <TSource, IEnumerable <TReturn> > BatchResolve <TSource, TKey, TReturn>(this FieldBuilder <TSource, object> fieldBuilder, Func <TSource, TKey> keySelector, DataLoaderResolverDelegate <TKey, TReturn> fetchDelegate)
 {
     return(fieldBuilder
            .Returns <IEnumerable <TReturn> >()
            .Resolve(new DataLoaderResolver <TSource, TKey, TReturn>(keySelector, fetchDelegate)));
 }