我想用我的应用程序中的一个Wcf服务包装每个结果,例如
public class OperationResult{
public string Status;
public string Data;
}
即使我的合同看起来像
[ServiceContract]
internal interface ITest
{
[OperationContract,
WebGet(
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
MyDc EchoDc(MyDc input);
}
根据我的阅读,潜在的可扩展性点是IServiceBehavior,IEndpointBehavior,IContractBehavior,IOperationBehavior。
有什么想法可以勾勒出我的包装魔法吗?
答案 0 :(得分:1)
看看@我的回答:
How to customize the process employed by WCF when serializing contract method arguments?
在那里提到了如何在返回时将一种类型的对象替换为另一种类型。
答案 1 :(得分:0)
我认为通过WCF框架上的扩展点无法做到这一点,因为您要做的就是更改合同。
合同是一个c#接口,供您的客户使用。
您必须编写一个自己的代理类供您的客户使用,您可以将操作结果映射到您喜欢的任何内容:
class ServiceProxy : ClientBase<YourServiceInterface>
{
public OperationResult EchoDc(MyDs input)
{
MyDc result = Channel.EchoDc(input);
return new OperationResult( ... // map your operation result here))
}
}