Прежде всего, возможно, стоит посмотреть на этот вопрос: Как я могу кешировать объекты в ASP.NET MVC?
Есть некоторый псевдокод, который почти выполняет то, что я хочу:1005 *
public class CacheExtensions
{
public static T GetOrStore<T>(this Cache cache, string key, Func<T> generator)
{
var result = cache[key];
if(result == null)
{
result = generator();
cache[key] = result;
}
return (T)result;
}
}
Однако то, что я действительно хотел бы сделать, это автоматически сгенерировать «ключ» из генератора.Я полагаю, что мне нужно изменить сигнатуру метода на:
public static T GetOrStore<T>(this Cache cache,
System.Linq.Expressions.Expression<Func<T>> generator)
Я хочу использовать имя метода, но также любые параметры и их значения для генерации ключа.Я могу получить тело метода из выражения и имена параметров (вроде), но я понятия не имею, как получить значения параметров ...?
Или я поступаю неправильно?Любые идеи высоко ценится.