Je ne sais pas si c'est possible.Cache Wrapper avec des expressions
Je veux qu'une classe encapsule tout le cache de mon site. Je pense à la meilleure façon de le faire pour éviter les conflits avec les clés.
Ma première idée est quelque chose comme ceci:
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];
}
est la meilleure façon? Ty
Expression avantage sur Func son exactement sur les paramètres. ToString retourne l'expression entière. Je ne comprends pas le problème avec la clé. C'est une chaîne. PS: Ops, noms de paramètres de retour d'expression, dont values =/ –
@Fujiy: La méthode ToString est chère par rapport à une recherche très rapide, et peut-être même à la compilation de l'expression. – leppie
Le principal problème est comment obtenir une chaîne unique basée sur les paramètres et le nom de la méthode –