Bonjour à tous !

Je vous expose le problème auquel je suis actuellement confronté :

J'ai une application utilisant LinQ to Entities et exposant les données de la base sous forme de WCF (pour être consommés par la suite par une UI en Silverlight ...)

J'ai donc différents services WCF, chacun ayant une sémantique : un pour gérer tout ce qui a un rapport avec les projets, un autre pour les users, e t c .....

Je rencontre cependant un problème de compatibilité entre les différents ServicesReference qui me sont fournis par les WCF côté client.

J'ai réalisé une petite appli console de test et voici le cas concert :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
// je suis dans le test du service user
 
//le client wcf pour le service en rapport avec les users
UserServiceClient usc = new UserServiceClient();
// le client wcf pour le service en rapport avec les projets
ProjectServiceClient psc= new ProjectServiceClient();
 
//je récupère un user, via le service gérant les users
user myUser = usc.GetUser(1);
 
// je récupère un projet, via le service gérant les projets
ProjectServiceReference.project myTestProject = psc.GetProject(1);
 
//j'essaie de faire comprendre à .NET que c'est le même objet
UserServiceReference.project myTestProjectUser = (UserServiceReference.project)((Object) myTestProject);
 
UserServiceReference.userRoleProject= usc.GetUserRoleProject(myUser,myTestProject);
Le fait est, les différents types exposés (user, project) sont en fait des types LinQtoEntities qui correspondent directement à des tables en base de données.

De ce fait, un ProjectServiceReference.project et un UserServiceReference.project sont en fait équivalent car tous deux identiques côté serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// en théorie
typeof(ProjectServiceReference.project) == typeof(UserServiceReference.project)
Comment puis-je faire correspondre ces deux types côté client ? Le cast que j'ai tenté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
A' monA';
A monA = (A)((Object) monA')
ne fonctionnant pas. (tout comme le transtypage direct de A' vers A)

Merci d'avance,

/pfellmann