2010-05-13 9 views
4

J'ai un POCO sérialisable appelé DataUnification.ClientData.ClientInfo dans un projet de bibliothèque de classes .NET A.Comment éviter les paramètres de méthode Web à l'aide de classes proxy?

Il est utilisé dans un paramètre pour un service Web défini dans le projet B:

public XmlDocument CreateNewClient(ClientInfo ci, string system) 

Je voudrais maintenant appeler cette méthode web à partir de projet C et utiliser le type DataUnification.ClientData.ClientInfo d'origine dans le paramètre. Cependant, en raison de la classe proxy générée, il est devenu un type différent: WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo.

En ce qui concerne .NET, il ne s'agit pas des mêmes types.

Comment puis-je contourner le problème?

Répondre

0

Ma première suggestion serait d'utiliser des proxies écrits à la main au lieu de proxies générés, de sorte que vous avez un contrôle total sur les types qui sont utilisés.

Ma deuxième suggestion serait d'utiliser un outil comme les services Web Factory, qui a une option pour vous permettre de réutiliser des classes existantes quand il génère du code (si les classes sont appropriées.)

+0

J'ai effectué le proxy généré pour utiliser Poco et tout a bien fonctionné. Je ne savais pas à propos de Web Services Factory - semble intéressant. –

0

Vous pouvez utiliser automapper http://automapper.codeplex.com/ pour créer un nouvel objet DataUnification.ClientData.ClientInfo à partir de l'instance WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo.

0

Vous pouvez afficher tous les fichiers et copier le contenu du reference.cs généré dans un nouveau fichier, puis supprimer le proxy généré et tous ses fichiers dépendants.

Maintenant, dans votre nouvelle référence.cs, supprimez les classes dto générées et mettez à jour toutes les références.

C'est la façon la plus laide.

2

Vous pouvez utiliser les types d'original en cochant simplement «Réutiliser les types dans les assemblages référencés spécifiés» et sélectionnez l'assemblage contenant les types d'original tout en générant des proxies pour votre service Web dans les paramètres avancés.

enter image description here

+0

c'est la seule réponse appropriée ici – ABH