2011-11-14 171 views
0

只有當null作爲參數傳遞時,是否可以緩存函數輸出? 事情是這樣的:ASP.NET web服務緩存

[WebMethod(CacheDuration = 360, NullOnly = true)] 
public SomeClass MyMethod(MyClass whatever) 
{ 
    //do something... 
    return something; 
} 

所以當任何== NULL函數返回緩存的輸出,而當它不爲null,則沒有緩存它生成的輸出。

回答

1

我不知道是否有更多的聲明方法,但你可以很容易地緩存結果在通常的高速緩存,並檢查參數爲null這樣的:

public SomeClass MyMethod(MyClass whatever) 
{ 
    if(whatever == null) 
    { 
     SomeClass result = Cache["MyMethodCache"] as SomeClass; 
     if(result != null) 
     return result; 
    } 


    //do something... 

    if(whatever == null) 
    { 
     Cache.Add("MyMethodCache",something, ...); //duration, expiration policy, etc. 
    } 

    return something; 
} 

不過這個版本將需要序列每次甚至通過緩存檢索結果。