Я ищу способ иметь общий локальный кеш для любого объекта. Вот код:
private static readonly Dictionary<Type,Dictionary<string,object>> _cache
= new Dictionary<Type, Dictionary<string, object>>();
//The generic parameter allow null values to be cached
private static void AddToCache<T>(string key, T value)
{
if(!_cache.ContainsKey(typeof(T)))
_cache.Add(typeof(T),new Dictionary<string, object>());
_cache[typeof (T)][key] = value;
}
private static T GetFromCache<T>(string key)
{
return (T)_cache[typeof (T)][key];
}
1 - Есть ли способ не использовать метод getfromcache?
2- Есть ли способ обеспечить безопасность типов во втором словаре, скажем, все объекты будут иметь одинаковый тип. (Это обеспечивается методом addToCache, но я бы предпочел контроль типов в самом дизайне). Например, чтобы иметь _cache следующего типа
Dictionary<Type,Dictionary<string,typeof(type)>>
Thx