0

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

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

不过,今天我遇到了一个用例,我想使缓存值无效。

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

请指教。

谢谢你。

4

1 回答 1

0

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

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]项目的缓存,这将是要走的路。

于 2015-05-08T01:51:44.877 回答