using UnityEngine; public abstract class PoolingObject : MonoBehaviour where T : PoolingObject { public BasePool OwningPool { protected get; set; } public C GetComponentFromPool() where C : Component { return OwningPool.GetComponentFromPool(this as T); } public void ReturnToPool() { OwningPool.ReturnToPool(this as T); } }