0

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

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

4

1 回答 1

0

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

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

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

于 2011-07-08T07:40:38.707 回答