Bonjour tout le monde,

Mon problème concerne les références Web, dans des projets sous VS 2005.

Mise en situation :
Mon programme doit consommer 2 WebServices, donc on me fournit les WSDL:
- le premier (appelons-le WS_Get) prend en Input un identifiant, et me renvoie un objet "Utilisateur" avec toutes ses infos (identifiant, nom, adresse...)
- le second (WS_Sync) prend en Input un objet "Utilisateur", et le met à jour dans le SI.

Je rajoute donc 2 références Web au projet, à partir des WSDL.

Le problème est que ça me crée la classe Utilisateur dans 2 namespaces différents (1 par référence web). Et je ne peux donc pas utiliser mon objet Utilisateur renvoyé par le WS_Get comme paramètre d'appel du WS_Sync, l'erreur obtenue étant
Impossible de convertir implicitement le type 'WS_Get.Utilisateur' en 'WS_Sync.Utilisateur'
.

Pour contourner le problème, j'ai donc essayé plusieurs idées :

1) Récupérer les fichiers Reference.cs, changer les namespaces, et supprimer les déclarations en double.
Inconvénients : c'est assez lourd (car j'ai en fait une 20aine de WS différents à utiliser), et je ne peux plus mettre à jour les références Web sans avoir à tout refaire.

2) Créer une méthode "Copie(object o, Type typeDestination)" basée sur de la réflection qui permet de passer d'un type à un autre, utilisable par exemple en faisant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
WS_Get.Utilisateur u;
(WS_Sync.Utilisateur)Copie(u, typeof(WS_Sync.Utilisateur));
Problème : c'est une usine à gaz à code, et je ne suis pas sûr qu'au niveau perf, ça soit tip-top.

L'un d'entre vous a-t-il déjà été confronté à ce type de problème et/ou aurait une idée pour le contourner ?

N'hésitez pas à demander si vous voulez + d'informations.

Merci d'avance !