Я пытаюсь поиграть с WCF, и я думаю, что я ударил блок. Моя проблема в том, что я могу позвонить Add(double,double)
и getPerson()
из «Клиента». Тем не менее, я не могу назвать какие-либо методы объекта Person
. Я разделил классы с помощью простых методов. Вот мои фрагменты кода, пожалуйста, дайте мне знать, что я делаю неправильно ..WCF возвращает объекты клиенту
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"
Я предполагаю, что-то случилось с моим классом Person декларации .. но не знаю, что мне делать или что мне не хватает.
Спасибо!
Потребовал мне минуту, чтобы понять, что DataContract не входит в пространство имен ServiceModel. Его в System.Runtime.Serialization, и вам также нужно будет добавить ссылку в свой проект к ней – Knightsy