如何使缓存的属性无效?

时间:2015-05-08 01:27:27

标签: c# asp.net caching bltoolkit

在我的ASP.NET网站中,我将从DB检索的对象保留一段时间,并确保每个DB记录创建唯一的对象实例。

我还使用[InstanceCache]缓存一个业务对象的计算值,对象在用户会话期间保存在缓存中。

但是,今天,当我想使缓存的值无效时,我遇到了用例。

如何对使用[InstanceCache]缓存的属性执行此操作?

请告知。

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您可以通过使用CacheAspect类的ClearCache静态方法之一来实现这一点,这些方法允许以不同的粒度级别清除缓存:

public static void ClearCache(MethodInfo methodInfo);
public static void ClearCache(Type declaringType, string methodName, params Type[] types);
public static void ClearCache(Type declaringType, string methodName, Type[] types, object[] values);
public static void ClearCache(Type declaringType);
public static void ClearCache();

如果要仅清除特定[InstanceCache]属性的缓存,则需要获取其MethodInfo(对于我认为属性的" get"方法)使用反射并将其传递给第一个变体。

这似乎适用于常规[Cache]属性注释,因此如果完全支持清除[InstanceCache]项的缓存,那么这将是要走的路。