CastleWindsorを使用したキャッシングがどのように機能するかを示す実用的な例を誰かに提供できますか。
出発点として、CacheAspect
IInterceptorから継承するmyを次のように定義すると思います。
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分間キャッシュする必要があります。1日などの他の例については、
CacheAspect
キャッシュ期間ごとにを作成する必要がありますか?各メソッドからキャッシュされた各値を識別するための最良の方法は何ですか?
invocation.TargetType.Name
との組み合わせを使用しinvocation.Method.Name
ますか?質問2を拡張します-パラメータが渡された場合はどうなりますか?次に、特定のパラメータセットに一致するデータをキャッシュしたかどうかを判断する必要があります。
ありがとう。