Sto provando a giocare con WCF e penso di aver colpito un blocco. Il mio problema è che sono in grado di chiamare Add(double,double)
e getPerson()
dal "Client". Tuttavia, non sono in grado di chiamare alcun metodo dell'oggetto Person
. Ho ridotto le classi con metodi semplici. Qui sono i miei frammenti di codice, per favore fatemelo sapere che cosa sto facendo male ..WCF restituire gli oggetti al client
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"
Sono indovinando qualcosa di sbagliato con la mia classe Person dichiarazione .. ma non capisco cosa dovrei fare o cosa mi manca ..
Grazie!
Ci è voluto un minuto per capire che DataContract non fa parte dello spazio dei nomi di ServiceModel. Si trova in System.Runtime.Serialization e sarà necessario aggiungere un riferimento nel progetto ad esso – Knightsy