从OpenRasta中的接收处理程序外部获取反序列化的实体

时间:2011-07-07 13:41:02

标签: entity openrasta

在OpenRasta(版本2.0.50727)中,如何从接收请求的处理程序外部获取反序列化实体的实例(在通过对象绑定传递之后)?再具体一点;在异常的情况下,我希望IOperationInterceptor将POSTed实体返回给客户端,并添加一些错误信息,以便客户端可以更正信息并使用相同的实体重新执行POST。

我看过IRequest.Entity,但这看起来像是实体的“原始”版本,这不是我追求的。我也看过IOperation.Inputs.First().Member(在IOperationInterceptor.BeforeExecute()中收到),但对于对象绑定器而言,它看起来更像是对我所追求的更有用,这是最终绑定和实例化的对象

1 个答案:

答案 0 :(得分:0)

我发现你可以像IOperationInterceptor.BeforeExecute一样重新构建对象:

public bool BeforeExecute(IOperation operation)
{
    var member = operation.Inputs.First();
    var bindingResult = member.Binder.BuildObject();
    var instance = bindingResult.Instance;
}

我没有测试过这会导致什么样的开销,以及是否有可能进入已经构建的实例,但这似乎有效。如果有人对如何做得更好有想法,请添加答案。在接受这个问题作为解决方案之前,我会暂时回答这个问题。