Может ли кто-нибудь представить рабочий пример того, как будет работать кеширование с помощью Castle Windsor.AOP Caching with Castle Windsor
Я полагаю, в качестве отправной точки я определяю мой CacheAspect
, который наследуется от IInterceptor следующим образом:
public class CacheAspect : IInterceptor
{
public void Intercept(IInvocation invocation)
{
// Code here to check if data is in cache and if so
// put that into invocation.ReturnValue... job done!
// If not then invoke the method
invocation.Proceed();
// Now cache the result of the invocation
}
}
Затем я могу украсить любой метод с моим CacheAspect
...
[Interceptor(typeof(CacheAspect))]
public List<string> GetStaticData()
{
}
.. и конечно, зарегистрируйте все это в контейнере Виндзора.
Однако ...
Как я могу изменить количество времени, я хочу что-то в моем кэше на вызов метода? В этом примере я могу потребовать его кэширования в течение 60 минут. Для других примеров за день и т. Д. Должен ли я создавать
CacheAspect
для каждой продолжительности кеша?Каков наилучший способ определить каждое кешированное значение для каждого метода? Например, комбинация
invocation.TargetType.Name
иinvocation.Method.Name
?Развернувшись на вопросе 2 - что делать, если есть параметры? Затем мне нужно определить, есть ли у меня кэшированные данные, соответствующие определенному набору параметров.
Спасибо.