我想在一个名为 A 的类上创建一个拦截器管道。通过 pipleline i 意味着每个拦截器都可以在调用类方法之前或之后执行一些过程,而无需直接调用被拦截的方法,这与 Windsor 中拦截器的传统用法不同。假设以下示例我想在所有 A 类方法上应用两个拦截器 Interceptor1 和 Interceptor2。在未来的其他人中,也许会添加其他类型的拦截器。提供这些拦截器的顺序并不重要,谁应该调用调用。继续,应该在哪里发生被拦截的方法调用。
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 中看到这样的模式,我们使用操作行为或服务行为来控制整个服务或每个服务操作。