如何从Ninject拦截器返回一些东西

时间:2016-09-28 20:14:43

标签: ninject interceptor

我已经编写了一个通用的验证器作为Ninject拦截器的一部分。我的要求是我必须返回一个响应对象,就像我的项目中的任何服务方法返回一样,为了保持一致。通过返回响应对象,还可以帮助我在验证器失败时发回适当的验证消息。我如何在拦截器中做到这一点?我明白Intercept()什么都不返回。我尝试抛出异常,但我不知道在哪里捕获它。有人能帮助我吗?

{{1}}

2 个答案:

答案 0 :(得分:1)

分配ReturnValue,并在验证失败时不要调用Proceed。

public class MyRequestHandler
{
   Response ProcessRequest(string input) { return new Response(); }
}

public MyValidationInterceptor : IInterceptor 
{
    public void Intercept( IInvocation invocation )
    {
        if (NeedsValidation(invocation.Method) && 
            !IsValidRequest((string)invocation.Arguments[0]))
        {
            invocation.ReturnValue =
                              new Response { ErrorMessage = "Validation Error" };
            return;
        }

        invocation.Proceed();
    }
}

答案 1 :(得分:0)

我必须将我的拦截器连接到业务层方法而不是服务方法,并且能够在我的响应中返回正确的返回值。