Problème avec un objet spécifique dans un webservice

Résolu
acidburnjo Messages postés 3 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 6 juillet 2007 - 3 juil. 2007 à 15:31
acidburnjo Messages postés 3 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 6 juillet 2007 - 4 juil. 2007 à 10:45
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

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
4 juil. 2007 à 10:38
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
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
3 juil. 2007 à 18:02
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
0
acidburnjo Messages postés 3 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 6 juillet 2007
4 juil. 2007 à 10:26
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.
0
acidburnjo Messages postés 3 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 6 juillet 2007
4 juil. 2007 à 10:45
Ok j'ai mis les objets et les classes en public et ca marche

Merci beaucoup pour ta réponse
0