2010-03-18 45 views
1

以下是由WCF服務提供的服務層的一部分:屬性名稱從原來的對象不同在Silverlight中

[Serializable] 
public class WaitInfo 
{ 
    private string roomName; 
    private string pName; 
    private string tagNo; 

    public string RoomName 
      { get { return roomName; } set { this.roomName = value; } } 
    public string PName 
      { get { return pName; } set { this.pName = value; } } 
    public string TagNo 
      { get { return tagNo; } set { this.tagNo = value; } } 
} 



public class Service1 : IService1 
{ 
    public List<WaitInfo> GetWaitingList() 
    { 
     MyDBDataContext db = new MyDBDataContext(); 

     var query = from w in db.WAIT_INFOs 
        select new WaitInfo 
        { 
         TagNo = w.PATIENT_INFO.TAG_NO, 
         RoomName= w.ROOM_INFO.ROOM_NAME, 
         PName= w.PATIENT_INFO.P_NAME 
        }; 

     List<WaitInfo> result = query.ToList(); 

     return result; 
    } 

而且下面是UI層的代碼隱藏一部分是由Silverlight的

 public MainPage() 
       { 
        InitializeComponent(); 

        Service1Client s = new Service1Client(); 
        s.GetWaitingListCompleted += 
    new EventHandler<GetWaitingListByCompletedEventArgs>(s_GetWaitingListCompleted); 
        s.GetWaitingListAsync(); 

       } 

     void s_GetWaitingListCompleted(object sender, 
    RadControlsSilverlightApplication1.ServiceReference2.GetWaitingListByCompletedEventArgs e) 
       { 

        GridDataGrid.ItemsSource = e.Result; 
       } 


    And following is xaml code in Silverlight page 


<Grid x:Name="LayoutRoot"> 
     <data:DataGrid x:Name="GridDataGrid"></data:DataGrid> 
</Grid> 
提供

這是非常簡單的代碼,但是我想怪異的是在頁面後面的代碼中的「e.Result」對象的屬性名稱。

在服務層中,儘管屬性的名稱肯定是「RoomName,PName,TagNo」,但在silverlight屬性名稱中是「roomName,pName,tagNo」,它們是WaitingList Object的專用變量名稱。

我有什麼問題嗎?

在此先感謝。

回答

2

除非您使用DataContract屬性(您應該,而不是Serializable)特別修飾您的類,否則將推斷默認的DataContract。對於正常的Serializable類型,這意味着字段將被序列化,而不是屬性。

您可以通過以下兩種方式標記您的課程。後者將在序列化/反序列化對象時使用屬性訪問器,這可能非常有用,或者根據您的情況很麻煩。

[DataContract] 
public class WaitInfo 
{ 
    [DataMember(Name="RoomName")] 
    private string roomName; 
    [DataMember(Name="PName")] 
    private string pName; 
    [DataMember(Name="TagNo")] 
    private string tagNo; 

    public string RoomName 
      { get { return roomName; } set { this.roomName = value; } } 
    public string PName 
      { get { return pName; } set { this.pName = value; } } 
    public string TagNo 
      { get { return tagNo; } set { this.tagNo = value; } } 
} 

的方法我更喜歡:

[DataContract] 
public class WaitInfo 
{ 

    private string roomName; 
    private string pName; 
    private string tagNo; 

    [DataMember] 
    public string RoomName 
      { get { return roomName; } set { this.roomName = value; } } 

    [DataMember] 
    public string PName 
      { get { return pName; } set { this.pName = value; } } 

    [DataMember] 
    public string TagNo 
      { get { return tagNo; } set { this.tagNo = value; } } 
} 
+0

謝謝你這麼多喬希。 這解決了我的問題。 – Ray

+0

隨時。很高興爲您服務。 – Josh

相關問題