Как изменить имя внешнего объекта с помощью WCF? - PullRequest
7 голосов
/ 28 марта 2012

Я использую класс WCF .svc примерно так:

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

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

Когда я возвращаю свой JSON, это выглядит так:

{"SetInformationResult":{ ... } }

Мой вопрос: откуда взялся SetInformationResult и могу ли я контролировать его имя без переименования моего класса? Например, "d", чтобы имитировать, что делает ScriptService?

РЕДАКТИРОВАТЬ: Для потомков соответствующие ссылки, которые я нашел с тех пор: Как я могу контролировать имя универсальных типов возврата WCF?

1 Ответ

16 голосов
/ 28 марта 2012

Имя пришло из названия вашей операции с приложением «Result».И вы можете переименовать его, используя атрибут [MessageParameter] при возврате метода:

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