我不知道是否有可能。
我想要一个类来封装我网站的所有缓存。我想到了最好的方法,以避免与键冲突。
我的第一个想法是这样的:
public static TResult Cachear<TResult>(this Cache cache, Expression<Func<TResult>> funcao)
{
string chave = funcao.ToString();
if (!(cache[chave] is TResult))
{
cache[chave] = funcao.Compile()();
}
return (TResult)cache[chave];
}
这是最好的方法吗? TY
答案 0 :(得分:1)
Expression.ToString()
相当昂贵。
另一个问题是Expression
总是新创建的对象,所以它们永远不会有相同的引用,所以将它作为键是有问题的。
最后一个问题(对您(尚未)影响),正在考虑所有可能的参数组合。
我唯一可以建议的是忘记Expression
,并直接使用Func<R>
。
答案 1 :(得分:0)