public TValue Find(TKey key)
 => dic.Write(d =>
 {
     if (key == null)
     {
         return(default(TValue));
     }
     if (d.ContainsKey(key))
     {
         return(d[key].Value);
     }
     var res = new MemoryKeyValueRepositoryValue <TValue>();
     try
     {
         res.Value     = _origin.Get(key);
         res.HasOrigin = true;
     }
     catch
     {
         res.Value     = default(TValue);
         res.HasOrigin = false;
     }
     d.Add(key, res);
     return(res.Value);
 });
 public TValue Get(TKey key)
 => dic.Write(d =>
 {
     if (d.ContainsKey(key))
     {
         return(d[key].Value);
     }
     var res = new MemoryKeyValueRepositoryValue <TValue>();
     try
     {
         res.Value     = _origin.Get(key);
         res.HasOrigin = true;
         return(res.Value);
     }
     catch
     {
         res.Value     = default(TValue);
         res.HasOrigin = false;
         throw;
     }
     finally
     {
         d.Add(key, res);
     }
 });
Exemplo n.º 3
0
        public async Task <TValue> GetAsync(TKey key)
        {
            if (dic.ContainsKey(key))
            {
                return(dic[key].Value);
            }
            var res = new MemoryKeyValueRepositoryValue <TValue>();

            try
            {
                res.Value = await _origin.GetAsync(key);

                res.HasOrigin = true;
                return(res.Value);
            }
            catch
            {
                res.Value     = default(TValue);
                res.HasOrigin = false;
                throw;
            }
            finally
            {
                dic.Add(key, res);
            }
        }
Exemplo n.º 4
0
 public Task SetAsync(TKey key, TValue value)
 {
     if (dic.ContainsKey(key))
     {
         dic[key].Value = value;
     }
     else
     {
         dic[key] = new MemoryKeyValueRepositoryValue <TValue>
         {
             HasOrigin = true,
             Value     = value
         }
     };
     return(_origin.SetAsync(key, value));
 }
Exemplo n.º 5
0
     public void Set(TKey key, TValue value)
     {
         if (dic.ContainsKey(key))
         {
             dic[key].Value = value;
         }
         else
         {
             dic[key] = new MemoryKeyValueRepositoryValue <TValue>
             {
                 HasOrigin = true,
                 Value     = value
             }
         };
         _origin.Set(key, value);
     }
 }
 public Task <TValue> FindAsync(TKey key)
 => dic.WriteAsync(async d =>
 {
     if (d.ContainsKey(key))
     {
         return(d[key].Value);
     }
     var res = new MemoryKeyValueRepositoryValue <TValue>();
     try
     {
         res.Value     = await _origin.GetAsync(key);
         res.HasOrigin = true;
     }
     catch
     {
         res.Value     = default(TValue);
         res.HasOrigin = false;
     }
     d.Add(key, res);
     return(res.Value);
 });
Exemplo n.º 7
0
        public bool Exist(TKey key)
        {
            if (dic.ContainsKey(key))
            {
                return(dic[key].HasOrigin);
            }
            var res = new MemoryKeyValueRepositoryValue <TValue>();

            try
            {
                res.Value     = _origin.Get(key);
                res.HasOrigin = true;
            }
            catch
            {
                res.Value     = default(TValue);
                res.HasOrigin = false;
            }
            dic.Add(key, res);
            return(res.HasOrigin);
        }