protected static void ReturnToPool(T toPool, PoolableObjectCheck extraCheck = null) { if (ObjectPool.Count < MaxPoolSize && (extraCheck == null || extraCheck.Invoke(toPool))) { ObjectPool.Enqueue(toPool); } else if (ShouldDispose) { (toPool as IDisposable)?.Dispose(); } }
protected ReusableObjectsPool(PoolableObjectFactory factory = null, PoolableObjectCheck check = null) { this.FromPool = GetFromPool(factory); this.OnReturnToPoolCheck = check; }