#c# #asp.net #web-services #caching
#c# #asp.net #веб-службы #кэширование
Вопрос:
Возможно ли кэшировать выходные данные функции только тогда, когда в качестве параметра передается значение null? Что-то вроде этого:
[WebMethod(CacheDuration = 360, NullOnly = true)]
public SomeClass MyMethod(MyClass whatever)
{
//do something...
return something;
}
Итак, когда whatever == null, функция возвращает кэшированный вывод, а когда он не равен null, она генерирует вывод без его кэширования.
Ответ №1:
Я не знаю, существует ли более декларативный метод, но вы можете легко кэшировать результат в обычном кэше и проверить, равен ли аргумент null, вот так:
public SomeClass MyMethod(MyClass whatever)
{
if(whatever == null)
{
SomeClass result = Cache["MyMethodCache"] as SomeClass;
if(result != null)
return resu<
}
//do something...
if(whatever == null)
{
Cache.Add("MyMethodCache",something, ... ); //duration, expiration policy, etc.
}
return something;
}
Однако этой версии потребуется сериализовать результат каждый раз, даже если он извлекается через кэш.