public T CreateObject <T>(params object[] param) where T : class { var type = typeof(T); var instance = ZInstanceUtility.CreateInstance(type, param); return(instance as T); }
private object GetObject(Type type, params object[] param) { lock (poolList) { for (int i = 0; i < poolCount; i++) { var poolData = poolList[i]; if (poolData.Obj.GetType() == type && !poolData.InUse) { poolData.InUse = true; if (poolData.Obj is IRecycleObject) { (poolData.Obj as IRecycleObject).Create(); } return(poolData.Obj); } } if (poolCount >= maxPoolCount && limitCount) { ZLog.Warning("object pool has max"); return(null); } object obj = ZInstanceUtility.CreateInstance(type, param); var newPoolData = new PoolData { InUse = true, Obj = obj }; poolList.Add(newPoolData); poolCount++; return(obj); } }
public T CreateObject <T>(params object[] param) where T : class { var type = typeof(T); if (cacheSingleObjectDic.ContainsKey(type)) { return(cacheSingleObjectDic[type] as T); } lock (lockObj) { var instance = ZInstanceUtility.CreateInstance(type, param); cacheSingleObjectDic.Add(type, instance); return(cacheSingleObjectDic[type] as T); } }