2009-09-08 12 views
0

Voici un problème un peu subtil auquel je suis confronté et j'apprécierais toute aide.Utilisation de la bibliothèque de classes .NET 2.0 à partir du service Silverlight WCF, les propriétés publiques restent non exposées

Nous avons notre projet sur le mode de production, construit avec .NET 2.0. Nous avons récemment développé une application Silverlight externe à la solution 2.0, et elle "parle" avec un service WCF. Ce service consomme des DLL que nous copions à partir de nos dossiers de publication de solution 2.0, afin d'accéder aux fonctionnalités de notre solution d'origine.

Le service WCF expose plusieurs méthodes et objets provenant de notre solution 2.0. De toute évidence, il utilise [DataContract] et [DataMember] s en interne, et ceux-ci ne sont pas disponibles dans notre solution d'origine (puisque c'est .NET 2.0, et à ce stade la mise à niveau vers 3.5 n'est pas une option). Heureusement, WCF est capable de traiter nos objets sérialisables comme s'ils étaient définis comme des contrats, mais pour une raison étrange, seules les variables membres (même si elles sont définies comme privées!) Sont sérialisées; Les propriétés, même paramétrables et publiques, ne sont jamais sérialisées.

Nos classes d'objets dont nous avons besoin ont [Serializable()] définies dessus. J'ai regardé autour et n'ai pas pu trouver une bonne solution/explication à ceci. Cela a probablement à voir avec comment .NET 3.0/3.5 "voit" mes objets 2.0 (il suppose [DataMember] seulement sur les variables et jamais sur les propriétés).

Ma question est principalement comment exposer les propriétés publiques seulement, et jamais des variables privées?

Merci d'avance pour tout commentaire à ce sujet.

Itamar.

Répondre

0

La raison en est inconnue. Nous avons contourné ce problème en dérivant de l'objet exposé (résidant dans les DLL compilées que nous utilisons via le projet WCF), puis en recréant les propriétés et les fonctions d'assistance dont nous avons besoin. Nous ajoutons également de nouvelles propriétés ou variables de membre si nécessaire. Ensuite, nous utilisons ce nouvel objet en interne (ceci nécessite parfois d'avoir un constructeur spécialisé pour faire des copies ou des ajustements). Pas idéal, mais travaillant.

Questions connexes