0

CastleWindsorを使用したキャッシングがどのように機能するかを示す実用的な例を誰かに提供できますか。

出発点として、CacheAspectIInterceptorから継承する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()
    {
    }

..そしてもちろん、すべてをウィンザーコンテナに登録します。

でも...

  1. メソッド呼び出しごとにキャッシュに何かが必要な時間を変更するにはどうすればよいですか?この例では、60分間キャッシュする必要があります。1日などの他の例については、CacheAspectキャッシュ期間ごとにを作成する必要がありますか?

  2. 各メソッドからキャッシュされた各値を識別するための最良の方法は何ですか?invocation.TargetType.Nameとの組み合わせを使用しinvocation.Method.Nameますか?

  3. 質問2を拡張します-パラメータが渡された場合はどうなりますか?次に、特定のパラメータセットに一致するデータをキャッシュしたかどうかを判断する必要があります。

ありがとう。

4

1 に答える 1