传递对象参数WCF

问题描述:

DataContract为: -传递对象参数WCF

namespace AssemblyA 
{ 
    public class Person         
    {  
     public string FirstName {get;set;} 
     public string LastName {get;set;}        
    }                
} 

服务如下: -

[ServiceContract]    
public interface IServer  
{ 
    [OperationContract] 
    Person GetPerson(); 

    [OperationContract] 
    Person UpdatePerson(Person person)    
} 

客户端: -

using AssemblyA; 

namespace AssemblyB 
{ 
    class Program  
    {   
     static void Main(string[] args)   
     {    
      IServer server = factory.CreateChannel(); 
      Person person = server.GetPerson(); 
      person.FirstName = "Kilroy";  
      person.LastName = ""; 
      Person p = server.UpdatePerson(person); 
      String str = p.LastName; 
     }  
    } 
} 

我有两个问题: -

  1. 我将LastName属性设置为空白并调用GetPerson方法。之后,当我检查姓氏属性时,它将作为没有而不是空白。

  2. 第二个问题是,如果我在Person类做如下改变: -

    public class Person            
    {             
        String _FirstName; 
        String _LastName;         
        public string FirstName 
        { 
         get{} 
         set 
         { 
          _FirstName=value; 
          _LastName="XYZ"; 
         } 
        } 
    
        public string LastName { get;set; } 
    } 
    

这之后,我改变了我的客户是: -

IServer server = factory.CreateChannel(); 
Person person = server.GetPerson(); 
person.FirstName = "Kilroy";  
person.LastName = "abc"; 
Person p = server.UpdatePerson(person); 
String str = p.LastName; 

然后在海峡就说明“XYZ”而不是“abc”。但我期待从它“abc”。

请指教,因为我必须在我的项目中使用它。

+0

是完整的代码? Person类的DataContract属性在哪里? – diggingforfire 2011-12-26 11:56:58

+0

你真的需要在评论中发表评论,而不是在你的问题细节中。它真的让你的问题变得模糊不清,并且使未来任何人都很难找出问题和解决方案。 – jlafay 2011-12-26 16:49:04

至于你的第二个问题,你有一个属性LastName和一个字段_LastName,它们是不相关的。在您的客户端代码中,您设置FirstName,这将_LastName 字段设置为“abc”,然后您设置姓氏属性

现在您已将Person类的字段_LastName设置为“XYZ”,将属性LastName设置为“abc”。