2011-02-17 32 views
2

如果我有具有暴露方法如WCF服務:你可以攔截WCF消息對象的創建嗎? (服務器端)

DoSomething(MyMessage msg) 

我可以攔截參數的創建方法調用或改變它是如何被實例化?

編輯(上下文): 我知道這是一個代碼味道,所以這個問題更多的是出於好奇心比任何東西,但是想象一下,我們想用統一到服務器上,一旦對消息進行構造函數注入消息已收到。這就是爲什麼我想攔截消息創建 - 使用Unity來實例化它。

回答

0

您可以實現一個參數檢查員檢查參數在發送消息到服務之前。

實現參數檢查器的關鍵是實現IParameterInspector接口。這個接口包含兩個方法:BeforeCall和AfterCall。用於這些方法的簽名如下:

void AfterCall(string operationName, object[] outputs, object returnValue, object 
correlationState); 

object BeforeCall(string operationName, object[] inputs); 

在兩種情況下,發送到方法的參數被呈現給這些方法作爲對象的數組。但是,他們在管道中的位置取決於檢查員是插入客戶端還是服務端。欲瞭解更多信息,請參見下面的鏈接:

How to: Inspect or Modify Parameters

+0

是的,你可以這樣做 - 但是在調用之前在**客戶端**上 - OP在執行方法之前詢問**服務器端** – 2011-02-17 11:22:41

0

除了由marc_s提到的擴展點,您也可以考慮在IOperationInvoker擴展點。具體取決於你想要用你的參數做什麼,這可能會更好或更容易地適應賬單。