예제 #1
0
        internal static void Deallocate <T>(T objectToDeallocate) where T : class
        {
            MyGenericObjectPool objectPool      = null;
            CleanerDelegate     cleanerDelegate = null;
            MyTuple <MyGenericObjectPool, CleanerDelegate> poolDelegatePair;

            if (m_poolsByType.TryGetValue(objectToDeallocate.GetType(), out poolDelegatePair))
            {
                objectPool      = poolDelegatePair.Item1;
                cleanerDelegate = poolDelegatePair.Item2;
            }
            else
            {
                Debug.Fail("No type registered for " + objectToDeallocate.GetType().ToString());
                return;
            }

            cleanerDelegate(objectToDeallocate);

            objectPool.Deallocate(objectToDeallocate);
        }