2010-08-27 9 views
2

J'ai une bibliothèque de classe Silverlight que je veux utiliser à la fois mon Silverlight et mon projet WebService.bibliothèques de classes, Silverlight et Webservices

Je peux créer et référencer la bibliothèque dans les deux projets sans aucun problème, mais lorsque j'essaie d'utiliser l'une des classes de la bibliothèque sur le projet Silerlight, j'obtiens une erreur de référence ambiguë entre ma bibliothèque et l'Asmx Webservice (apparemment, le projet Silverlight pense que les classes de la bibliothèque de classes existent dans le webservice).

Comment puis-je résoudre ce problème? J'ai essayé de reconstruire et de nettoyer, mais cela ne semble pas fonctionner. Quelqu'un peut-il aider?

Répondre

0

sons comme les objets que vous passer à Silverlight, via le service WCF, sont les mêmes objets dans votre bibliothèque de classes. Dans ce cas, les objets de référence Web générés recevront les mêmes noms. Lier avec la bibliothèque vous donnera alors 2 ensembles d'objets avec les mêmes noms.

Si vous installez les services RIA, une fois est la possibilité de partager le code entre le client et le serveur en ajoutant simplement « .shared » dans les noms de fichiers de classe avant les extensions. services ASMX sont donc siècle dernier :)

si vous ne voulez pas apprendre les services RIA moyen d'objets de partage à travers le (je recommande que) grand-web-fracture, vous devez séparer les objets de données de la fonctionnalité que vous voulez réellement partager côté client et côté serveur.

Pour donner des conseils plus spécifiques sur votre configuration actuelle je besoin de voir plus sur la façon dont il est structuré.

+0

Je essentiellement commencé ce projet sans la connaissance des webservices et ASMX est arrivé d'être celui que je pris, mais il est maintenant devenu assez grand pour que je ne l'ai pas pris la peine de le changer. En ce qui concerne sa structure, j'ai toutes mes "classes de données" dans la bibliothèque, et j'ai une utilisation "ClassLibrary", avec une référence à la DLL de bibliothèque de classes, dans mon cours de service web (j'ai tous mes appels Web dans ce classe). De plus, j'ai la référence de la bibliothèque de classes dans mon projet Silverlight ainsi qu'une USING "ClassLibrary" et "WebService". Lorsque j'essaie d'utiliser une classe de données dans la Silverlight, j'obtiens l'erreur ambiguë. – gfeli

+0

Fondamentalement, c'est le type de situation que les services RIA ont été conçus pour résoudre. Même si cela peut sembler intimidant de déplacer des douzaines (voire des centaines) de cours dans les services RIA, cela ne sera pas aussi douloureux que cela en a l'air et vous facilitera la vie à l'avenir. J'ai maintenant des bibliothèques de service RIA qui sont venues dans les projets de paire. Vous liez un à votre application SL et un au site Web. Fonctionne un régal. Faites des recherches rapides sur l'AIR puis prenez votre décision. Je ne peux pas penser à une réponse facile à votre situation actuelle en utilisant une seule bibliothèque traditionnelle. Cheers –

0

Une technique que vous pouvez utiliser est aliasing vos déclarations en utilisant:

using MyNameSpace = My.Name.Space; 
using MyWebService = My.Web.Service; 

ensuite accéder à tous vos objets avec ces alias pour lever les ambiguïtés.

+0

Cela fonctionne mais j'ai des problèmes de conversion de type, c'est ce que je voulais éviter. – gfeli

+0

@gfeli - Avez-vous spécifié des espaces de noms jusqu'au niveau racine afin que le service Web ne prenne pas le contrôle de l'espace de noms de l'objet? Si votre webservice renvoie l'objet namespaced complet comme My.Full.NameSpace.Type alors il ne devrait pas y avoir un problème de conversion de type. –

Questions connexes