J'ai un projet de formulaires Windows et un projet de service Web dans ma solution, et j'essaie d'appeler le service Web et de renvoyer un objet client comme résultat. Le problème est que lorsque j'essaie de recevoir l'objet de retour, j'obtiens une erreur qu'il ne peut pas le convertir. Par exemple, voici la signature de mon webservice:.Service Web .NET utilisant une instance d'un type de paramètre?
Public Function GetDriverByID(ByVal DriverID As Integer) As Driver
Et voici le code que je utilise pour appeler:
Dim d As Driver = mywebserviceinstance.GetDriverByID(1)
Mais je reçois cette erreur de compilation (wsDrivers est le nom de la référence Web que j'ai ajouté à mon projet de formulaire): "Valeur de type ProjectNamespace.Common.wsDrivers.Driver ne peut pas être converti en ProjectNamespace.Common.Driver"
Cet espace de noms "Common" contient la classe Driver, et je ne suis pas sûr pourquoi la classe de retour du service Web n'est pas seulement un generi c "Driver", mais est à la place un "wsDrivers.Driver", et je ne peux pas le reconvertir. Quelqu'un sait comment je peux faire face à ce type de discordance?
EDIT: Merci pour les explications - cela permet de comprendre ce qu'il fait. Cependant, est-il possible de forcer l'utilisation du type réel au lieu du proxy (ou plutôt, est-il possible de convertir entre l'instance "réelle" et l'instance "proxy"), ou dois-je sérialiser les propriétés avant de les envoyer sur le réseau, puis désérialiser manuellement les valeurs de retour?
Y a-t-il un moyen de contourner cela? Puisque je référence la même DLL dans les deux projets (le webservice et le projet avec la référence Web), puis-je forcer la "classe proxy" à être une copie de sa classe réelle? Ou y a-t-il un moyen facile de les mettre en correspondance les uns avec les autres? – SqlRyan