/// <summary> /// 设置缓存项的值。 /// </summary> /// <param name="key">缓存项的原始键值。</param> /// <param name="value">缓存项的值。</param> /// <param name="methodName">调用当前的方法的方法名称。</param> /// <param name="expiration">缓存项的过期信息实例对象:<c>null</c> 表示滑动十分钟过期。</param> protected void SetValue(string key, object value, string methodName, Expiration expiration) { if (ReferenceEquals(key, null)) { throw new ArgumentNullException("[BaseCacheContainer].[SetValue].key"); } if (ReferenceEquals(value, null)) { return; } expiration = expiration ?? Expiration.CreateInstance(); if (expiration.Container != null && !ReferenceEquals(expiration.Container, this)) { throw new ArgumentException("[BaseCacheContainer].[SetValue].expiration.Container 已存在,不能添加!"); } expiration.Container = this; var notification = expiration.Notification ?? CacheNotification.CreateInstance(); notification.Key = key; notification.SetValue(value, false); if (notification.Expiration != null && !ReferenceEquals(notification.Expiration, expiration)) { throw new ArgumentException("[BaseCacheContainer].[SetValue].expiration.[Notification].Expiration 已存在,过期对象处理错误!"); } notification.Expiration = expiration; Push(GetKey(key), methodName, expiration); }