Estoy tratando de jugar con WCF y creo que he tocado un bloque. Mi problema es que puedo llamar al Add(double,double)
y getPerson()
desde el "Cliente". Sin embargo, no puedo llamar a ningún método del objeto Person
. He desmantelado las clases con métodos simples. Aquí están mis fragmentos de código, por favor, hágamelo saber lo que estoy haciendo mal ..WCF devolver objetos al cliente
Server Code
namespace Test.WebSvc{
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Sample")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
Person getPerson();
}
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2) { return n1+n2 ; }
public Person getPerson(){
Person tempPerson = new Person();
return tempPerson;
}
}
[DataContract]
public class Person{
[OperationContractAttribute]
public string toString(){
return "This is a Person Object";
}
Client Code
ServiceRef1.CalculatorClient client = ServiceRef1.CalculatorClient();//works
Console.WriteLine(client.Add(1.0,2.0)); //this too works
ServiceRef1.Person p = client.getPerson(); // this is OK., but is not doing what I wanted it to do
Console.WriteLine(p.toString()); // I do not get "This is Person Object"
que supongo que algo anda mal con mi declaración de la clase Persona .. pero no entiendo qué debo hacer o qué me falta ...
¡Gracias!
Me tomó un minuto darme cuenta de que DataContract no es parte del espacio de nombres de ServiceModel. Está en System.Runtime.Serialization y también necesitarás agregar una referencia en tu proyecto a él – Knightsy