A という名前のクラスでインターセプターのパイプラインを作成したいと考えています。パイプラインとは、Windsor でのインターセプターの従来の使用法とは異なり、インターセプターのそれぞれが、インターセプトされたメソッドを直接呼び出すことなく、クラス メソッドが呼び出される前または後にいくつかのプロセスを実行できることを意味します。すべてのクラス A メソッドに 2 つのインターセプター Interceptor1 と Interceptor2 を適用する次の例を考えます。Futures otherでは、多分、他の種類のインターセプターが追加されるでしょう。これらのインターセプターの順序は重要ではなく、誰が invocation.Proceed を呼び出す必要があるかは重要ではありません。インターセプトされたメソッドの呼び出しが行われる場所です。
public class A
{
public virtual void DoSomething()
{
}
}
public class Interceptor1 : IInterceptor
{
public virtual void Intercept(IInvocation invocation)
{
}
}
public class Interceptor2 : IInterceptor
{
public virtual void Intercept(IInvocation invocation)
{
}
}
例として、クラスメソッドに入る前に、セキュリティをチェックしたり、トランザクションを開始したり、これらのようなことをしたいとします。これらのインターセプターはクラスごとに異なり、開発プロセス中に変更される可能性があることに注意してください。wcf でこのようなパターンを見ることができます。ここでは、操作の動作またはサービスの動作を使用して、サービス全体または各サービス操作を制御します。