public void RemoveCache(Element element)
        {
            var cacheKey = new ElementCacheKey(element);

            lock (CachedElements)
            {
                if (CachedElements.ContainsKey(cacheKey))
                {
                    CachedElements.Remove(cacheKey);
                }
            }
        }
        public Element Get(string name, string category, string culture)
        {
            var     cachedKey = new ElementCacheKey(name, category, culture);
            Element element   = CachedElements[cachedKey] as Element;

            //.FirstOrDefault(i => i.Name == key && i.Category == category && i.Culture == culture.Name);
            if (element == null)
            {
                element = inner.Get(name, category, culture);

                if (element != null)
                {
                    AddCache(element);
                }
            }
            return(element);
        }
        public Element Get(string name, string category, string culture)
        {
            var cachedKey = new ElementCacheKey(name, category, culture);
            Element element = CachedElements[cachedKey] as Element;

            //.FirstOrDefault(i => i.Name == key && i.Category == category && i.Culture == culture.Name);
            if (element == null)
            {
                element = inner.Get(name, category, culture);

                if (element != null)
                {
                    AddCache(element);
                }
            }
            return element;
        }
		/// <summary>
		/// Gets the specified name.
		/// </summary>
		/// <param name="name">The name.</param>
		/// <param name="category">The category.</param>
		/// <param name="culture">The culture.</param>
		/// <returns>Element.</returns>
		public Element Get(string name, string category, string culture)
		{
			var cachedKey = new ElementCacheKey(name, category, culture);
			var element = _cachedElements[cachedKey] as Element;
			if (element == null)
			{
				var statusElement = GetStatusElement(culture);
				if (statusElement == null)
				{
					var preloadedCategoryLocalizations = _innerRepository.Elements().Where(it => it.Culture.Equals(culture, StringComparison.OrdinalIgnoreCase));
					foreach (var preloadedCategoryLocalization in preloadedCategoryLocalizations)
					{
						AddCache(preloadedCategoryLocalization);
					}

					SetStatusElement(default(DateTime), culture);
					element = _cachedElements[cachedKey] as Element;
				}
			}
			return element;
		}
        /// <summary>
        /// Gets the specified name.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="category">The category.</param>
        /// <param name="culture">The culture.</param>
        /// <returns>Element.</returns>
        public Element Get(string name, string category, string culture)
        {
            var cachedKey = new ElementCacheKey(name, category, culture);
            var element   = _cachedElements[cachedKey] as Element;

            if (element == null)
            {
                var statusElement = GetStatusElement(culture);
                if (statusElement == null)
                {
                    var preloadedCategoryLocalizations = _innerRepository.Elements().Where(it => it.Culture.Equals(culture, StringComparison.OrdinalIgnoreCase));
                    foreach (var preloadedCategoryLocalization in preloadedCategoryLocalizations)
                    {
                        AddCache(preloadedCategoryLocalization);
                    }

                    SetStatusElement(default(DateTime), culture);
                    element = _cachedElements[cachedKey] as Element;
                }
            }
            return(element);
        }
 /// <summary>
 /// Adds the cache.
 /// </summary>
 /// <param name="element">The element.</param>
 public void AddCache(Element element)
 {
     var cacheKey = new ElementCacheKey(element);
     CachedElements[cacheKey] = element;
 }
 /// <summary>
 /// Removes the cache.
 /// </summary>
 /// <param name="element">The element.</param>
 public void RemoveCache(Element element)
 {
     var cacheKey = new ElementCacheKey(element);
     lock (CachedElements)
     {
         if (CachedElements.ContainsKey(cacheKey))
         {
             CachedElements.Remove(cacheKey);
         }
     }
 }
        public void AddCache(Element element)
        {
            var cacheKey = new ElementCacheKey(element);

            CachedElements[cacheKey] = element;
        }
		private Element GetStatusElement(string culture)
		{
			var cachedKey = new ElementCacheKey(StatusDateKeyInner, null, culture);
			return _cachedElements[cachedKey] as Element;
		}
        private Element GetStatusElement(string culture)
        {
            var cachedKey = new ElementCacheKey(StatusDateKeyInner, null, culture);

            return(_cachedElements[cachedKey] as Element);
        }