2011-11-14 6 views
0

nullをパラメータとして渡した場合のみ、関数出力をキャッシュすることはできますか?このような 何か:それはnullでないときASP.NET Webサービスキャッシュ

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

だから、それをキャッシュせずに出力を生成どんな== 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; 
} 

しかし、このバージョンはシリアライズする必要があります。その結果もキャッシュを介して取り出されるたびに結果として得られます。

関連する問題