2012-03-27 67 views
6

我使用像这样一个WCF的.svc类:如何使用WCF更改外部对象的名称?

[DataContract] public class FunInfo { ... } 
[OperationContract, WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] 

public FunInfo SetInformation(int a, int b) { ... } 

当我把我的JSON回来,它看起来像这样:

{"SetInformationResult":{ ... } } 

我的问题是:如果没有SetInformationResult从何而来,我可以控制它的名字而不用重命名我的课程?例如,以“d”来模仿ScriptService的功能?

编辑:对于后人,相关链接我发现自从:How can I control the name of generic WCF return types?

回答

16

名字从你的操作名称附带追加到“结果”。你可以通过使用该方法返回的[MessageParameter]属性将其重命名:

[OperationContract, WebInvoke(...)] 
[return: MessageParameter(Name = "d")] 
public FunInfo SetInformation(int a, int b) { ... } 
+2

哇我搜索高和低是什么,以及找不到它的任何地方记录。 ASP.NET WCF/ASMX系统可能是任何MSDN最糟糕的API ...谢谢! – 2012-03-27 21:22:08

+0

这让我发疯。 – cycopepe 2017-10-07 18:09:51