2010-10-28 3 views
0

J'ai un service wcf Restful qui renvoie la classe suivante, mais les champs Total et Count deviennent 0 lorsqu'il atteint le côté client. Mais ils ont les bonnes valeurs du côté serveur.Les propriétés publiques ne sont pas désérialisées dans le service wcf REST

public class Groups : List<Group> 
{ 
    private int total; 
    private int start; 

    /// <summary> 
    /// Total number of Groups in the result set irrespective of the paging 
    /// </summary> 
    public int Total 
    { 
     get 
     { 
      return total; 
     } 
     set 
     { 
      total = value; 
     } 
    } 

    /// <summary> 
    /// Index (in the full non paged result set) of the first group in the set. 
    /// </summary> 
    public int Start 
    { 
     get 
     { 
      return start; 
     } 
     set 
     { 
      start = value; 
     } 
    } 


} 

Le problème est lorsque le client reçoit la valeur de retour de l'appel de service, le démarrage et les champs au total sont toujours 0. Mais quand déboguer le code du service, il renvoie la valeur correcte, mais au moment où il vient au client côté ils sont devenus 0. Mais la liste de la classe de base est retourné correctement (il ne se perd pas)

Quand je retourne la classe du groupe, qui est une classe simple (non dérivé de quoi que ce soit), il est également retourné correctement.

Le problème se produit uniquement avec les champs Public de la classe de collection groups. Donc je pense que c'est un problème de désérialisation et j'ai essayé d'ajouter l'attribut [Datamember], [seriaizable] et l'implémentation de ISerializable mais rien n'a fonctionné.

Toute aide sera grandement appréciée.

Merci

Répondre

0

Ok ce que je l'ai fait si quelqu'un d'autre a rencontré cette question.

Comme je l'ai découvert c'est le comportement par défaut de DataContractSerializer, ce n'est pas une bonne idée de conception pour ajouter d'autres propriétés aux collections. Les collections devraient être juste une collection d'articles seulement. donc ce que je faisais était de modifier le code ci-dessous et il fonctionne

public class Groups 

{private int totale; private int start; privés Groupes de listes;

public int Total 
{ 
    get { return total; } 
    set { total = value; } 
} 

public int Start 
{ 
    get { return start; } 
    set { start = value; } 
} 

public List<Group> Values 
{ 
    get { return groups; } 
    set { groups = value; } 
} 

}

Questions connexes