Tôi đang cố gắng chơi với WCF và tôi nghĩ rằng tôi đã đánh một khối. Vấn đề của tôi là tôi có thể gọi Add(double,double)
và getPerson()
từ "Khách hàng". Tuy nhiên, tôi không thể gọi bất kỳ phương thức nào của đối tượng Person
. Tôi đã loại bỏ các lớp học bằng các phương pháp trần. Dưới đây là đoạn mã của tôi, xin vui lòng cho tôi biết những gì tôi đang làm sai ..WCF trả lại đối tượng cho khách hàng
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"
Tôi đoán điều gì đó xảy ra với tuyên bố của tôi lớp Person .. nhưng dint có được một đầu mối những gì tôi nên làm hoặc những gì tôi đang thiếu ..
Cảm ơn!
Hãy cho tôi một phút để làm việc ra rằng DataContract không phải là một phần của ServiceModel Namespace. Trong System.Runtime.Serialization của nó và bạn cũng sẽ cần phải thêm một tham chiếu trong dự án của bạn vào nó – Knightsy