private bool TryOfToStoreCombain(Type keyType, Type valueType, object key, FuncArgWrapper creator, out object value) { if (TryOfToStoreContainer(keyType, valueType, key, creator, out value)) { return(false); } value = TryOfToStoreLocal(keyType, valueType, key, creator); return(true); }
private bool TryOfToStoreContainer(Type keyType, Type valueType, object key, FuncArgWrapper creator, out object value) { try { value = ContainerServer.OfToStore(keyType, valueType, key, creator); return(true); } catch { value = null; return(false); } }
public object OfToStore(Type keyType, Type valueType, object key, Func <object, object> func) { var creator = new FuncArgWrapper(func); var type = typeof(StoreExtensions <,>).MakeGenericType(keyType, valueType); bool isLocal; if (IsLocal || (_localTypes.TryGetValue(type, out isLocal) && isLocal)) { return(TryOfToStoreLocal(keyType, valueType, key, creator)); } object value; isLocal = TryOfToStoreCombain(keyType, valueType, key, creator, out value); _localTypes.GetOrAdd(type, isLocal); return(value); }
private object TryOfToStoreLocal(Type keyType, Type valueType, object key, FuncArgWrapper creator) { return(LocalServer.OfToStore(keyType, valueType, key, creator)); }
public static TValue GetSet(TKey key, FuncArgWrapper creator) { return(Store.GetOrAdd(key, (TValue)creator.Execute(key))); }
public object OfToStore(Type keyType, Type valueType, object key, FuncArgWrapper creator) { return(StoreExtensions.GetSet(keyType, valueType, key, creator)); }