Problème avec un objet spécifique dans un webservice [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 14 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007
-
Messages postés
3
Date d'inscription
jeudi 14 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007
-
Bonjour,

je rencontre un problème dans l'utilisation d'un webservice qui utilise une classe particulière:

Coté webservice:

[WebMethod]
public void addMyObjectToStack(String userID, String stackID, MyObject currentObject)
{

}

La classe MyObject est défini côté webservice et côté client (C'est exactement la même classe)

Côté client:

Je créé un objet MyObject et je souhaite invoqué le webservice. Le problème c'est que le compilo me lève Class Cast Exception car il s'attend à voir un objet du type MonWebservice.MyObject.

---
MyObject currentObject = new MyObject();
ws.addMyObjectToStack(this.TextBoxUser.Text, stackId, currentObject , "send001");
---

Comment faire pour supprimer cette erreur?

Merci par avance

Bonne journée

4 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Donc les 2 classes côtés client et services ne sont pas identiques ?

Dans ce cas tu n'a pas le choix, tu dois utiliser la classe côté service pour l'appel de service. Et ensuite, selon ce que tu veux faire côté client :
- si tu veux fournir en entrée la classe demandée alors tu dois être capable de créer une instance de la classe "service" depuis la classe "client"
- si tu veux récupérer en sortie de ton service la classe en question alors tu dois être capable de créer une instance de la classe "client" depuis la classe "service"

Si tu peux modifier librement ces 2 classes, ça ne pose pas de problème : pour créer une classe A à partir d'une classe B, il te suffit par exemple de rajouter à A un constructeur qui prend B en paramètre (et recopie soit toutes les propriétés de B, ou bien directement une référence vers B - et tu utilise ensuite B par délégation)

<hr size="2" width="100%" />Working as designed
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Le type "MonWebservice.MyObject" doit être public. Dans ce cas, pourquoi ne travaille tu pas côté client avec ce type ?
Tu déclares ta variable comme étant du type MonWebService.MyObject et tu pourra l'utiliser directement (s'il s'agit exactement de la même côté client et service ça ne sert à rien de la dupliquer).

<hr size="2" width="100%" />Working as designed
Messages postés
3
Date d'inscription
jeudi 14 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007

Le problème c'est que la classe MyObject est une composition de plusieurs classes. Si j'utilise le type MonWebservice.MyObject je n'est plus accès aux classes composants cet objet.
Messages postés
3
Date d'inscription
jeudi 14 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007

Ok j'ai mis les objets et les classes en public et ca marche

Merci beaucoup pour ta réponse