Esempio n. 1
0
        public T CreateObject <T>(params object[] param) where T : class
        {
            var type     = typeof(T);
            var instance = ZInstanceUtility.CreateInstance(type, param);

            return(instance as T);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }