2011-02-17 60 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扩展点。具体取决于你想要用你的参数做什么,这可能会更好或更容易地适应账单。