private static IPoolStorage <T> CreateStorage(PoolAccessStrategy strategy) { switch (strategy) { case PoolAccessStrategy.FIFO: return(new PoolQueueStorage <T>()); case PoolAccessStrategy.LIFO: return(new PoolStackStorage <T>()); default: throw new ArgumentOutOfRangeException("strategy", "Unexpected access strategy: " + strategy); } }
public Pool(Func <T> resourceFactory, PoolAccessStrategy accessStrategy = PoolAccessStrategy.FIFO) { this.resourceFactory = resourceFactory; resourceStorage = CreateStorage(accessStrategy); }