예제 #1
0
 public static IServiceCollection AddResourceFetcher(this IServiceCollection services)
 {
     services.AddScoped <RemoteFetcher>();
     services.AddScoped <IRootFetcher>(p =>
     {
         var lockFactor  = p.GetRequiredService <IResourceLockerFactory>();
         var provider    = p.GetRequiredService <FetcherProvider>();
         var rootFetcher = new RootFetcher(lockFactor);
         var fetchers    = provider.Select(x => (IResourceFetcher)p.GetRequiredService(x)).ToArray();
         rootFetcher.AddRange(fetchers);
         return(rootFetcher);
     });
     services.AddScoped <ISingleResourceFetcher>(x => x.GetRequiredService <IRootFetcher>());
     services.AddScoped <IBatchResourceFetcher>(x => x.GetRequiredService <IRootFetcher>());
     return(services);
 }
예제 #2
0
 public ComicRankService(IDatabase redisDatabase,
                         RootFetcher rootFetcher)
 {
     this.redisDatabase = redisDatabase;
     this.rootFetcher   = rootFetcher;
 }