public Pool(CreateObject createObject, EnableObject enableObject, DisableObject disableObject) { _availableObjects = new List <T>(); _createObject = createObject; _enableObject = enableObject; _disableObject = disableObject; }
public void ReleaseAll() { CleanNulls(); int poolItemsCount = PoolItems.Count; for (var index = 0; index < poolItemsCount; index++) { PoolItems[index] = new Tuple <T, bool>(PoolItems[index].Item1, false); DisableObject?.Invoke(PoolItems[index].Item1); } }
public bool ReleaseObject([NotNull] T obj) { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } CleanNulls(); int poolItemsCount = PoolItems.Count; for (var index = 0; index < poolItemsCount; index++) { T item1 = PoolItems[index].Item1; if (EqualityComparer <T> .Default.Equals(obj, item1)) { DisableObject?.Invoke(item1); PoolItems[index] = new Tuple <T, bool>(item1, false); return(true); } } return(false); }