2009-11-20 7 views
1

J'ai obtenu une classe appelée "Board" et une de ses propriétés est une ObservableCollection. Quand j'envoie le ObservableCollection via WCF (du serveur au client) fin l'appel de mon proxy, il est transformé en un tableau, ce qui n'est pas bon pour moi. Puis-je conserver ObservableCollection après avoir été envoyé, ou dois-je kicker le tableau jusqu'à ce qu'il redevienne ObservableCollection?ObservableCollection se transforme en un tableau après avoir été transporté en utilisant WCF

Répondre

2

Vérifiez l'option 'Configure Service Reference' dans le menu contextuel dans VS pour la référence. Vous pouvez choisir le type de collection qui est transmis sur le service. Par défaut je pense qu'il est défini sur array mais il y a plusieurs choix (je crois que list et observablecollection sont des options).

EDIT: Je viens de vérifier, et malheureusement la collection observable n'est pas l'un des choix. Il semble que vous devrez choisir parmi:

  • Tableau
  • ArrayList
  • LinkedList
  • Liste
  • Collection
  • BindingList
+1

Peut-être au moment où il n'a pas été possible, mais de nos jours, vous pouvez choisir ObservableCollection. –

+0

Nice! Je suis heureux que MS ait fait du bon travail en ajoutant des fonctionnalités à la WCF au fil du temps. –

2

Par défaut - non, vous Je ne peux rien y faire. WCF va sérialiser vos structures en quelque chose qui peut être représenté avec un schéma XML. Le schéma XML n'a aucune connaissance de rien d'autre que des structures de données brutes et assez simplistes. Vous ne pouvez transférer que des données concrètes et brutes - pas d'addon comportemental «magique». IF Vous possédez les deux extrémités du fil: vous pouvez placer vos contrats de service et de données dans un ensemble de bibliothèque de classes distinct et les partager entre le serveur et le client. Dans ce cas, vous n'avez qu'une seule implémentation de votre contrat de données: votre ObservableCollection.

Si vous partagez cet ensemble entre votre service (mise en œuvre) classe, et le client (ajouter la référence à cette assemblée avant vous « Ajouter un service de référence » de Visual Studio!), Votre client doit ramasser ce ObservableCollection et continuez à l'utiliser (au lieu de créer un tableau compatible avec le schéma XML du côté client).

0

Merci à vous deux pour la réponse. Je regarderai les deux solutions quand je continuerai le projet, et commencera par essayer et changer l'envoi de collection par le service de wcf.

Je vais vous laisser savoir ce qui fonctionne pour moi ...

Questions connexes