拦截器由城堡windsor管道

时间:2012-08-12 12:55:55

标签: castle-windsor interceptor pipeline

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

1 个答案:

答案 0 :(得分:0)

我必须是一个古老的学校城堡人,但这不是工厂的意思吗?在每个类上打一个接口,让工厂在该接口上工作。