Cast Objet provenant d'un Web Service

Francks11 Messages postés 71 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 13 décembre 2008 - 11 mars 2008 à 16:47
Francks11 Messages postés 71 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 13 décembre 2008 - 17 mars 2008 à 13:36
Bonjour,

j'utilise un Web Service pour récuperer un objet Personne. Lorsque je le récupère, je n'arrive pas à faire un "cast" vers un objet de type Personne également car ils n'ont pas le même namespace.

Comment faire pour effectuer un cast d'un objet de même nom et de même structure (sans traitement lourd)

Merci

6 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
11 mars 2008 à 17:07
Si tu as la main sur les deux bouts de la chaine (côté client & côté web service) le mieux d'après moi est de modifier ton code pour que les deux couches manipulent la même donnée (cette donnée se trouvant donc dans un espace de nom commun, dans une assembly commune).

Si tu n'a pas le choix, alors je ne pense pas que tu ai de solution simple, autre que redéfinir "à la main" le cast de l'objet source vers l'objet destination.

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
12 mars 2008 à 08:57
Même en utilisant une assembly commune tu ne pourras pas "caster" d'objets entre ton webservice et ton application.
Le plus simple est d'utiliser une interface.

Par exemple :

public interface IPersonne {
   string Nom {get; set;}
   string Prenom {get; set; }
   short Age {get; set;}
}

et

public class Personne : IPersonne {
   ...
}

ensuite, remplace le type de retour de ton webservice pour qu'il utilise IPersonne à la place de Personne.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Francks11 Messages postés 71 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 13 décembre 2008
17 mars 2008 à 08:37
bonjour,

d'après ce que j'ai pu comprendre, il n'est pas possible de sérialiser une interface, donc comment faire??

merci
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
17 mars 2008 à 09:23
ce n'est pas l'interface qui est sérialisée... c'est la classe...
tu ne peux pas sérialiser une interface car elle ne contient pas de donnée.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
17 mars 2008 à 09:26
sinon, tu peux tout passer par une DataTable et utiliser ce code pour "retransformer" dans les bons types :

http://www.csharpfr.com/codes/CONVERTIR-OBJET-DATATABLE-VICE-VERSA_39658.aspx

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Francks11 Messages postés 71 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 13 décembre 2008
17 mars 2008 à 13:36
tu m'as dit plus haut de mettre en type de retour d'une fonction d'un web service une interface, mais ça me donne cette erreur :

Impossible de sérialiser l'interface Objets.Test.IAgent.
0
Rejoignez-nous