Exemplo n.º 1
0
 /// <summary>
 ///     远程缓存容器,提供了相关的基本操作
 /// </summary>
 /// <param name="category">分类名称</param>
 /// <param name="proxy">远程缓存代理器</param>
 /// <exception cref="ArgumentNullException">参数不空为能</exception>
 public RemoteCacheContainer(string category, IRemoteCacheProxy <K, V> proxy)
 {
     if (string.IsNullOrEmpty(category))
     {
         throw new ArgumentNullException(nameof(category));
     }
     if (proxy == null)
     {
         throw new ArgumentNullException(nameof(proxy));
     }
     _innerContainer = new CacheContainer <K, V>(category);
     _innerContainer.CacheExpired += CacheExpired;
     _proxy = proxy;
     _proxy.LocalContainer = _innerContainer;
 }
Exemplo n.º 2
0
 /// <summary>
 ///     租借一个新的远程缓存容器
 /// </summary>
 /// <typeparam name="K">缓存key类型</typeparam>
 /// <typeparam name="V">缓存对象类型</typeparam>
 /// <param name="category">分类名称</param>
 /// <param name="proxy">远程缓存代理器</param>
 /// <returns>返回远程缓存容器</returns>
 /// <exception cref="ArgumentNullException">参数不能为空</exception>
 public ICacheContainer <K, V> Rent <K, V>(string category, IRemoteCacheProxy <K, V> proxy)
 {
     if (string.IsNullOrEmpty(category))
     {
         throw new ArgumentNullException(nameof(category));
     }
     if (proxy == null)
     {
         throw new ArgumentNullException("proxy");
     }
     lock (_lockObj)
     {
         //already has this container.
         if (_containers.ContainsKey(category))
         {
             return(null);
         }
         IRemoteCacheContainer <K, V> container = new RemoteCacheContainer <K, V>(category, proxy);
         _containers.Add(category, container);
         return(container);
     }
 }