public override IDisposable AggressivelyCacheFor(TimeSpan cacheDuration) { var disposables = ShardStrategy.Shards.Select(shard => shard.Value.AggressivelyCacheFor(cacheDuration)).ToList(); return new DisposableAction(() => { foreach (var disposable in disposables) { disposable.Dispose(); } }); }