Los servicios web de ASP.NET tienen eso, que cuando quieres devolver tu objeto Person te lo renombran al nombre del método + result y te lo meten dentro de un método + response, así este código:
public class Person
{
public string Name { get; set; }
}
[WebService(Namespace = "http://tempuri.org/")]
public class Service : System.Web.Services.WebService
{
public Service () {
}
[WebMethod]
public Person Get() {
return new Person { Name = "Pepito" };
}
}
Sin embargo usando atributos de Serializacion en la clase Person, definiéndole el nombre y el tipo, y de Soap en la clase Service conseguiremos que nos devuelva el objeto como lo hemos definido.
Así que este código:
[System.Xml.Serialization.XmlRootAttribute(ElementName = "Person", DataType = "Person")]
public class Person
{
public string Name { get; set; }
}
[SoapDocumentService(Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare), WebService(Namespace = "http://tempuri.org/")]
public class Service : System.Web.Services.WebService
{
public Service () {
}
[WebMethod]
public Person Get() {
return new Person { Name = "Pepito" };
}
}
Te genera esto:
Categories: , .NET Framework, SOAP, Trucos, WebServices, XML


