在OpenRasta(版本2.0.50727)中,如何从接收请求的处理程序外部获取反序列化实体的实例(在通过对象绑定传递之后)?再具体一点;在异常的情况下,我希望IOperationInterceptor
将POSTed实体返回给客户端,并添加一些错误信息,以便客户端可以更正信息并使用相同的实体重新执行POST。
我看过IRequest.Entity
,但这看起来像是实体的“原始”版本,这不是我追求的。我也看过IOperation.Inputs.First().Member
(在IOperationInterceptor.BeforeExecute()
中收到),但对于对象绑定器而言,它看起来更像是对我所追求的更有用,这是最终绑定和实例化的对象
答案 0 :(得分:0)
我发现你可以像IOperationInterceptor.BeforeExecute
一样重新构建对象:
public bool BeforeExecute(IOperation operation)
{
var member = operation.Inputs.First();
var bindingResult = member.Binder.BuildObject();
var instance = bindingResult.Instance;
}
我没有测试过这会导致什么样的开销,以及是否有可能进入已经构建的实例,但这似乎有效。如果有人对如何做得更好有想法,请添加答案。在接受这个问题作为解决方案之前,我会暂时回答这个问题。