2011-12-26 127 views
0

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

回答

0

至於你的第二個問題,你有一個屬性LastName和一個字段_LastName,它們是不相關的。在您的客戶端代碼中,您設置FirstName,這將_LastName 字段設置爲「abc」,然後您設置姓氏屬性

現在您已將Person類的字段_LastName設置爲「XYZ」,將屬性LastName設置爲「abc」。