public void Release(TComponent obj, TKey key)
        {
            var found = _pools.TryGetValue(key, out var pool);

            if (!found)
            {
                pool        = new ComponentObjectPool <TComponent>(_constructor);
                _pools[key] = pool;
            }

            pool.Release(obj);
        }
        public TComponent Get(TKey key, bool activate = true, params object[] parameters)
        {
            var found = _pools.TryGetValue(key, out var pool);

            if (!found)
            {
                pool        = new ComponentObjectPool <TComponent>(_constructor);
                _pools[key] = pool;
            }

            return(pool.Get(activate, parameters));
        }