json = GetJsonFromWebService("cf4174ce-96d2-495c-b58a-427d35f64a20");
Cache.Save("JsonValue", DateTimeOffset.Now.AddMinutes(20), json);
public static class Cache
{
public static TResult Load<TResult>(string cacheKeyName)
{
ObjectCache cacheInstance = MemoryCache.Default;
return (TResult)cacheInstance[cacheKeyName];
}
public static T Save<T> (string cacheKeyName, DateTimeOffset expirationDate, T value)
{
CacheItemPolicy cacheItemPolicy = new CacheItemPolicy();
cacheItemPolicy.AbsoluteExpiration = expirationDate;
ObjectCache cacheInstance = MemoryCache.Default;
cacheInstance.Set(cacheKeyName, value, cacheItemPolicy);
return value;
}
public static TResult Load<TResult>(string cacheKeyName, int expirationMinutes, Func<TResult> serviceFunction)
{
return Load<TResult>(cacheKeyName, DateTimeOffset.Now.AddMinutes(expirationMinutes), serviceFunction);
}
public static TResult Load<TResult>(string cacheKeyName, int expirationMinutes, Func<string, TResult> serviceFunction, string stringArg)
{
return Load<TResult>(cacheKeyName, DateTimeOffset.Now.AddMinutes(expirationMinutes), serviceFunction, stringArg);
}
public static TResult Load<TResult>(string cacheKeyName, int expirationMinutes, Func<long, TResult> serviceFunction, long longArg)
{
return Load<TResult>(cacheKeyName, DateTimeOffset.Now.AddMinutes(expirationMinutes), serviceFunction, longArg);
}
public static TResult Load<TResult>(string cacheKeyName, int expirationMinutes, Func<int, TResult> serviceFunction, int intArg)
{
return Load<TResult>(cacheKeyName, DateTimeOffset.Now.AddMinutes(expirationMinutes), serviceFunction, intArg);
}
public static TResult Load<TResult>(string cacheKeyName, DateTime expirationDate, Func<TResult> serviceFunction)
{
return Load<TResult>(cacheKeyName, new DateTimeOffset(expirationDate), serviceFunction);
}
public static TResult Load<TResult>(string cacheKeyName, DateTime expirationDate, Func<string, TResult> serviceFunction, string stringArg)
{
return Load<TResult>(cacheKeyName, new DateTimeOffset(expirationDate), serviceFunction, stringArg);
}
public static TResult Load<TResult>(string cacheKeyName, DateTime expirationDate, Func<long, TResult> serviceFunction, long longArg)
{
return Load<TResult>(cacheKeyName, new DateTimeOffset(expirationDate), serviceFunction, longArg);
}
public static TResult Load<TResult>(string cacheKeyName, DateTime expirationDate, Func<int, TResult> serviceFunction, int intArg)
{
return Load<TResult>(cacheKeyName, new DateTimeOffset(expirationDate), serviceFunction, intArg);
}
public static TResult Load<TResult>(string cacheKeyName, DateTimeOffset expirationDateOffset, Func<TResult> serviceFunction)
{
TResult cachedObject = Load<TResult>(cacheKeyName);
if (cachedObject == null)
{
cachedObject = Save(cacheKeyName, expirationDateOffset, serviceFunction());
}
return cachedObject;
}
public static TResult Load<TResult>(string cacheKeyName, DateTimeOffset expirationDateOffset, Func<string, TResult> serviceFunction, string stringArg)
{
TResult cachedObject = Load<TResult>(cacheKeyName);
if (cachedObject == null)
{
cachedObject = Save(cacheKeyName, expirationDateOffset, serviceFunction(stringArg));
}
return cachedObject;
}
public static TResult Load<TResult>(string cacheKeyName, DateTimeOffset expirationDateOffset, Func<long, TResult> serviceFunction, long longArg)
{
TResult cachedObject = Load<TResult>(cacheKeyName);
if (cachedObject == null)
{
cachedObject = Save(cacheKeyName, expirationDateOffset, serviceFunction(longArg));
}
return cachedObject;
}
public static TResult Load<TResult>(string cacheKeyName, DateTimeOffset expirationDateOffset, Func<int, TResult> serviceFunction, int intArg)
{
TResult cachedObject = Load<TResult>(cacheKeyName);
if (cachedObject == null)
{
cachedObject = Save(cacheKeyName, expirationDateOffset, serviceFunction(intArg));
}
return cachedObject;
}
}
The function can be passed in that will fill the data if it does not exist in the cache.