我已经编写了一个通用的验证器作为Ninject拦截器的一部分。我的要求是我必须返回一个响应对象,就像我的项目中的任何服务方法返回一样,为了保持一致。通过返回响应对象,还可以帮助我在验证器失败时发回适当的验证消息。我如何在拦截器中做到这一点?我明白Intercept()什么都不返回。我尝试抛出异常,但我不知道在哪里捕获它。有人能帮助我吗?
{{1}}
答案 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)
我必须将我的拦截器连接到业务层方法而不是服务方法,并且能够在我的响应中返回正确的返回值。