通用对象池,使用时会将常用的对象至于池顶,如果设置了池的大小,超出池的未经常使用的对象将被移除,并且执行回调,可在回调中对移除对象进行其他操作。
可对压入的对象进行命名,通过名字来进行查找和删除。
源码
using System.Collections;
using System.Collections.Generic;
using System;
using System.Linq;
namespace XM.Tool
{
public class ResourcePool<T> : IEnumerable<ResourcePool<T>.ResInfo> where T : class
{
public class ResInfo
{
public string path;
public T res;
public ResInfo(string p, T r)
{
path = p;
res = r;
}
public bool HasRes()
{
return res != null;
}
}
private Action<List<ResInfo>> _onRemove;
private int _poolMaxSize = 0;
private List<ResInfo> _poolLst = new List<ResInfo>();
//public List<ResInfo> Pool { get { return _poolLst; } }
public int PoolMaxSize { get { return _poolMaxSize; } }
public int PoolSize { get { return _poolLst.Count; } }
public ResourcePool(Action<List<ResInfo>> onRemove = null, int maxSize = 0)
{
_onRemove = onRemove;
_poolMaxSize = maxSize;
}
~ResourcePool()
{
//
Clear();
}
public void SetRemoveCallback(Action<List<ResInfo>> onRemove)
{
_onRemove = onRemove;
}
/// <summary>
/// 设置大小
/// </summary>
///