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