using System.Collections.Generic; namespace Gum.Pooling { public sealed class PoolCollection where TValue : IPoolable { private readonly Dictionary> _poolDictionary; private readonly PoolBuilder _poolBuilder; public PoolCollection(PoolBuilder poolBuilder) { _poolDictionary = new Dictionary>(); _poolBuilder = poolBuilder; } public TValue Get(TKey key, object[] args = null) { EnsureExistence(key); return _poolDictionary[key].Get(args); } private void EnsureExistence(TKey key) { if (_poolDictionary.ContainsKey(key)) { return; } IPool pool = _poolBuilder.Build(); _poolDictionary.Add(key, pool); } } }