如何从 Ninject 拦截器中 return 一些东西
how to return something from a Ninject Interceptor
我已经编写了一个通用验证器作为 Ninject 拦截器的一部分。为了保持一致性,我的要求是我必须 return 一个响应对象,就像我项目中的任何服务方法 return 一样。通过 returning 响应对象还可以帮助我在验证器失败时发回适当的验证消息。我如何在拦截器中做到这一点?我明白 Intercept() return 没什么。我试着抛出一个异常,但我不知道在哪里捕捉它。有人可以帮助我吗?
public void Intercept(IInvocation invocation)
{
var validationFails = false;
if (validationFails)
{
// return an object
// response.ErrorMessage = "Validation Error"
// Or throw exception, but where should I catch it
throw new Exception(statusMessage);
}
else
{
invocation.Proceed();
}
}
分配 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();
}
}
我不得不将我的拦截器连接到业务层方法,而不是服务方法,并且能够return正确的return值作为我响应的一部分。
我已经编写了一个通用验证器作为 Ninject 拦截器的一部分。为了保持一致性,我的要求是我必须 return 一个响应对象,就像我项目中的任何服务方法 return 一样。通过 returning 响应对象还可以帮助我在验证器失败时发回适当的验证消息。我如何在拦截器中做到这一点?我明白 Intercept() return 没什么。我试着抛出一个异常,但我不知道在哪里捕捉它。有人可以帮助我吗?
public void Intercept(IInvocation invocation)
{
var validationFails = false;
if (validationFails)
{
// return an object
// response.ErrorMessage = "Validation Error"
// Or throw exception, but where should I catch it
throw new Exception(statusMessage);
}
else
{
invocation.Proceed();
}
}
分配 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();
}
}
我不得不将我的拦截器连接到业务层方法,而不是服务方法,并且能够return正确的return值作为我响应的一部分。