Pb classes identiques dans 2 namespaces

laurent_apo Messages postés 3 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 1 août 2006 - 1 août 2006 à 11:31
laurent_apo Messages postés 3 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 1 août 2006 - 1 août 2006 à 16:51
bonjour,
je dispose d'une solution contenant plusieurs webservices et plusieurs projets (appelant ou pas ces webservices).

 pour résumé j'ai  :
- une bibliothèque de classes B1 utilisée un peu partout dans les projets et Webservices.
- un webservice WS1, dans lequel j'ai importé B1.
- un projet P1, dans lequel j'ai importé B1 et le webservice WS1.

mon problème est le suivant :
Lorsque j'appelle une WebMethode de WS1 avec en retour un objet ayant une définition dans B1, depuis mon projet P1, j'ai une erreur de compilation.
Cette erreur précise que l'objet attendu (et/ou les paramètres passés lors de l'appel) ne sont pas du type attendu.
En effet malgré que les objets proviennent d'une classe identique (B1) ils appartiennent à 2 namespaces différents (celui du WS1 et celui de P1) d'où l'erreur à la compil.
J'ai essayé de forcer en castant les objets dans les types attendus, mais Dotnet m'interdit ce cast toujours pour la même raison.

Existe-t-il une solution de cast d'un objet identique dans des namespaces différents ??

Merci d'avance pour votre collaboration.

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
1 août 2006 à 15:45
hum... en gros la bonne solution, c'est de créer un projet dans lequel tu mets B1.


ensuite tu références le projet B1 dans les autres projets... ca marche nettement mieux comme cela.






Sébastien FERRAND
(

blog
)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
laurent_apo Messages postés 3 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 1 août 2006
1 août 2006 à 16:12
C'est ce que j'ai fait et noté dans le début de mon 1er post ...

pour résumé j'ai  :
- une bibliothèque de classes B1 utilisée un peu partout dans les projets et Webservices.
- un webservice WS1, dans lequel j'ai importé B1.
- un projet P1, dans lequel j'ai importé B1 et le webservice WS1.

Ma bibliothèque B1 est un projet compilé sous forme de Dll, puis imprté par référence dans mes autres projets .... je pensais moi aussi que cela devait fonctionner mais non
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
1 août 2006 à 16:24
Ton problème doit venir d'ailleur...

je fais ca tous les jours dans le boulot...

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
laurent_apo Messages postés 3 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 1 août 2006
1 août 2006 à 16:51
Je vais tacher d'être plus précis :

ma webmethod dans mon ws est la suivante :

[
WebMethod]

public
CSuiviAct GetSuiviAct(
CSLogin login,
int p_id_suiviact)
{
.....
}

Avec CSLogin définie dans ma bibliothèque B1 importée par référence dans mon projet webservice.

Dans mon projet Winform, j'ai l'appel suivant :

{ ...


WS_Kyrano_Tache.WS_Kyrano_Tache ws = new  WS_Kyrano_Tache.
WS_Kyrano_Tache();
CSLogin login_saisi= new CSLogin();

sva =
ws.GetSuiviAct(
login_saisi, (
int)
CSSession.utilisateur.id_utilisateur);

...}

Avec (de la même façon que dans le ws ), CSLogin définie dans ma bibliothèque B1 importée par référence dans mon projet WinForm.

et à la compilation, j'ai l'erreur sur login_saisi,
et un message précisant que login_saisi doit être du type : MonNamespace.ws.CSLogin et non pas CSLogin simplement.

PS : j'ai essayé un cast du type :
sva = ws.GetSuiviAct( (MonNamespace.ws.CSLogin) login_saisi, (int)CSSession.utilisateur.id_utilisateur);

mais sans succès

Merci pout ton aide.
0
Rejoignez-nous