繁体   English   中英

如何使缓存的属性无效?

[英]How to invalidate cached property?

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

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

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

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

请指教。

谢谢。

我认为您可以通过使用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]项的缓存,则可以采用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM