Как сделать недействительным кэшированное свойство?

На моем веб-сайте ASP.NET я сохраняю объекты, извлеченные из БД в течение некоторого времени, и проверяю, что для каждой записи БД создается только один экземпляр объекта.

Я также использую [InstanceCache], чтобы кэшировать вычисленное значение для одного из бизнес-объектов, объект хранится в кэше на время сеанса пользователя.

Сегодня, однако, я столкнулся с вариантом использования, когда я хотел бы сделать недействительным кэшированное значение.

Как я могу сделать это для свойств, которые кэшируются с помощью [InstanceCache]?

Пожалуйста, порекомендуйте.

Спасибо.

1 ответ

Я думаю, что вы можете сделать это с помощью одного из 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] пункты вообще поддерживаются, это будет маршрут, чтобы пойти.

Другие вопросы по тегам