Example #1
0
 private bool TryOfToPoolCombain(Type type, FuncWrapper creator, out object value)
 {
     if (TryOfToPoolContainer(type, creator, out value))
     {
         return(false);
     }
     value = TryOfToPoolLocal(type, creator);
     return(true);
 }
Example #2
0
        public static T GetSet(FuncWrapper creator)
        {
            var value = Get();

            if (value != null)
            {
                return(value);
            }
            value = (T)creator.Execute();
            Set(value);
            return(value);
        }
Example #3
0
 private bool TryOfToPoolContainer(Type type, FuncWrapper creator, out object value)
 {
     try
     {
         value = ContainerServer.OfToPool(type, creator);
         return(true);
     }
     catch
     {
         value = null;
         return(false);
     }
 }
Example #4
0
        public object OfToPool(Type type, Func <object> func)
        {
            var  creator = new FuncWrapper(func);
            bool isLocal;

            if (IsLocal || (_localTypes.TryGetValue(type, out isLocal) && isLocal))
            {
                return(TryOfToPoolLocal(type, creator));
            }
            object value;

            isLocal = TryOfToPoolCombain(type, creator, out value);
            _localTypes.GetOrAdd(type, isLocal);
            return(value);
        }
Example #5
0
        public static T GetSet(FuncWrapper creator)
        {
            T value;

            return(Get(out value) ? value : (T)creator.Execute());
        }
Example #6
0
 private object TryOfToPoolLocal(Type type, FuncWrapper creator)
 {
     return(LocalServer.OfToPool(type, creator));
 }
Example #7
0
 public object OfToPool(Type type, FuncWrapper creator)
 {
     return(PoolExtensions.GetSet(type, creator));
 }
Example #8
0
 public object OfToOne(Type type, FuncWrapper creator)
 {
     return(OneExtensions.GetSet(type, creator));
 }