2012-03-27 24 views
6

estoy usando una clase .svc WCF, así:¿Cómo cambio el nombre del objeto externo usando WCF?

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

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

Cuando llego a mi JSON, que se ve así:

{"SetInformationResult":{ ... } } 

Mi pregunta es: ¿De dónde provienen de SetInformationResult, y puedo controlar su nombre sin renombrar mi clase? ¿A "d", por ejemplo, para imitar lo que hace ScriptService?

EDIT: Para la posteridad, enlaces relevantes que he encontrado desde: How can I control the name of generic WCF return types?

Respuesta

16

El nombre proviene de su nombre de la operación con el "resultado" adherido a ella. Y puede cambiarle el nombre utilizando el atributo [MessageParameter] en la declaración del método:

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

¡me han buscado alta y baja para eso, y no lo encontró documentado en ninguna parte. El sistema ASP.NET WCF/ASMX podría ser la API peor documentada de MSDN en cualquier lugar ... ¡gracias! –

+0

esto me estaba volviendo loco. – cycopepe

Cuestiones relacionadas