/// <summary> /// SharedCache에 해당 키에 해당하는 값이 있으면 그 값을 반환하고, 없으면, <paramref name="valueFactory"/>로 값을 생성해서 값을 저장 후 그 값을 반환합니다. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sharedCache"></param> /// <param name="key"></param> /// <param name="valueFactory"></param> /// <returns></returns> public static T GetOrAdd <T>(this IndexusProviderBase sharedCache, string key, Func <T> valueFactory) { sharedCache.ShouldNotBeNull("sharedCache"); key.ShouldNotBeWhiteSpace("key"); valueFactory.ShouldNotBeNull("valueFactory"); if (IsDebugEnabled) { log.Debug("SharedCache에서 Key[{0}]에 해당하는 값을 로드합니다.", key); } T result; if (sharedCache.TryGet <T>(key, out result)) { return(result); } result = valueFactory(); if (sharedCache.TryAdd(key, result)) { return(result); } throw new InvalidOperationException(string.Format("ShardCached에 Key[{0}]에 해당하는 값을 저장하는데 실패했습니다.", key)); }
/// <summary> /// SharedCache에 해당 키에 해당하는 값이 존재하는지 확인합니다. /// </summary> /// <param name="sharedCache"></param> /// <param name="key"></param> /// <returns></returns> public static bool ExistsKey(this IndexusProviderBase sharedCache, string key) { object item; return(sharedCache.TryGet(key, out item)); }