diff --git a/src/Umbraco.Core/Cache/CacheProviderExtensions.cs b/src/Umbraco.Core/Cache/CacheProviderExtensions.cs
new file mode 100644
index 0000000000..475e4adfaf
--- /dev/null
+++ b/src/Umbraco.Core/Cache/CacheProviderExtensions.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Umbraco.Core.Cache
+{
+ ///
+ /// Extensions for strongly typed access
+ ///
+ internal static class CacheProviderExtensions
+ {
+ //T GetCacheItem(string cacheKey, TimeSpan? timeout, Func getCacheItem);
+ //T GetCacheItem(string cacheKey, CacheItemRemovedCallback refreshAction, TimeSpan? timeout, Func getCacheItem);
+ //T GetCacheItem(string cacheKey, CacheItemPriority priority, CacheItemRemovedCallback refreshAction, TimeSpan? timeout, Func getCacheItem);
+ //T GetCacheItem(string cacheKey, CacheItemPriority priority, CacheItemRemovedCallback refreshAction, CacheDependency cacheDependency, TimeSpan? timeout, Func getCacheItem);
+
+ public static void ClearCacheObjectTypes(this ICacheProvider provider)
+ {
+ provider.ClearCacheObjectTypes(typeof(T).ToString());
+ }
+
+ public static IEnumerable GetCacheItemsByKeySearch(this ICacheProvider provider, string keyStartsWith)
+ {
+ var result = provider.GetCacheItemsByKeySearch(keyStartsWith);
+ return result.Select(x => ObjectExtensions.TryConvertTo(x).Result);
+ }
+
+ public static T GetCacheItem(this ICacheProvider provider, string cacheKey)
+ {
+ var result = provider.GetCacheItem(cacheKey);
+ if (result == null)
+ {
+ return default(T);
+ }
+ return result.TryConvertTo().Result;
+ }
+
+ public static T GetCacheItem(this ICacheProvider provider, string cacheKey, Func getCacheItem)
+ {
+ var result = provider.GetCacheItem(cacheKey, () => getCacheItem());
+ if (result == null)
+ {
+ return default(T);
+ }
+ return result.TryConvertTo().Result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Cache/DictionaryCacheProdiverBase.cs b/src/Umbraco.Core/Cache/DictionaryCacheProdiverBase.cs
index adc02f9104..b3955cc087 100644
--- a/src/Umbraco.Core/Cache/DictionaryCacheProdiverBase.cs
+++ b/src/Umbraco.Core/Cache/DictionaryCacheProdiverBase.cs
@@ -67,28 +67,7 @@ namespace Umbraco.Core.Cache
}
}
}
-
- ///
- /// Clears all objects in the System.Web.Cache with the System.Type specified
- ///
- public virtual void ClearCacheObjectTypes()
- {
- lock (Locker)
- {
- var keysToRemove = DictionaryCache.Cast