キャッスルウィンザーがどのように動作するかの実例を誰にでも教えてください。Castle Windsorを使用したAOPキャッシング
私は次のようにIInterceptorから継承私のCacheAspect
を定義する出発点として推測:
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で展開する - パラメータが渡されるとどうなりますか?次に、特定のパラメータセットに一致するデータがキャッシュされているかどうかを判断する必要があります。
ありがとう。