private bool TryOfToPoolCombain(Type type, FuncWrapper creator, out object value) { if (TryOfToPoolContainer(type, creator, out value)) { return(false); } value = TryOfToPoolLocal(type, creator); return(true); }
public static T GetSet(FuncWrapper creator) { var value = Get(); if (value != null) { return(value); } value = (T)creator.Execute(); Set(value); return(value); }
private bool TryOfToPoolContainer(Type type, FuncWrapper creator, out object value) { try { value = ContainerServer.OfToPool(type, creator); return(true); } catch { value = null; return(false); } }
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); }
public static T GetSet(FuncWrapper creator) { T value; return(Get(out value) ? value : (T)creator.Execute()); }
private object TryOfToPoolLocal(Type type, FuncWrapper creator) { return(LocalServer.OfToPool(type, creator)); }
public object OfToPool(Type type, FuncWrapper creator) { return(PoolExtensions.GetSet(type, creator)); }
public object OfToOne(Type type, FuncWrapper creator) { return(OneExtensions.GetSet(type, creator)); }