如何使缓存属性失效?

问题描述 投票:0回答:1

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

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

今天,当我想要使缓存值无效时,我遇到了这个用例。

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

c# asp.net caching bltoolkit
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]
项目的缓存,这将是要走的路线。

© www.soinside.com 2019 - 2024. All rights reserved.