2011-07-07 17 views
0

在OpenRasta(2.0.50727版)中,如何從接收請求的處理程序外部到達反序列化實體的實例(通過對象綁定後) ?再具體一點;在發生異常的情況下,我想讓IOperationInterceptor將POST實體返回給客戶端,並添加一些錯誤信息,以便客戶端可以更正信息並使用同一個實體重新執行POST。從OpenRasta的接收處理程序外部獲取反序列化的實體

我看過IRequest.Entity,但看起來像一個「原始」版本的實體,這不是我所追求的。我也看過IOperation.Inputs.First().Member(在IOperationInterceptor.BeforeExecute()中收到),但這看起來對於一個對象綁定器來說比我之後的東西更有用,它是最終綁定和實例化的對象。

回答

0

我想通了,在IOperationInterceptor.BeforeExecute,你可以重新編譯對象,像這樣:

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

我沒有測試過的是什麼樣的開銷,此招,如果有可能去的已建成的情況下,但這似乎正在工作。如果有人有關於如何做得更好的想法,請添加答案。在接受這個解決方案之前,我會暫時不回答這個問題。