Question : WCF a niché les types complexes

Bonjour, le

I ont un problème exposer une classe par l'intermédiaire de WCF, quand il met en référence un autre objet, que je voudrais envoyer « en bas du fil » aussi bien. le
To le facilitent, voici une structure simplifiée qui montre le problème : le

There sont 3 classes : Disque (une classe basse), OnsiteAppointment et client (tous les deux héritent du disque). class= " lineNumbers " >
1 de >

   _
    Classe publique OnsiteAppointment
        Hérite du disque

        _startDate privé en tant que date-heure
         _
        Propriété publique StartDate () en tant que date-heure
            Obtenir
                Renvoyer le _startDate
            L'extrémité obtiennent
            Placer (valeur de ByVal en tant que date-heure)
                _startDate = valeur
            Ensemble d'extrémité
        Propriété d'extrémité

_customer privé comme client
         _
        Client de propriété publique () comme client
            Obtenir
                Renvoyer le _customer
            L'extrémité obtiennent
            Placer (valeur de ByVal comme client)
                _customer = valeur
            Ensemble d'extrémité
        Propriété d'extrémité

Classe d'extrémité

  _
    Client public de classe
        Hérite du disque

        _firstName privé comme corde
         _
        Propriété publique FirstName () comme corde
            Obtenir
                Renvoyer le _firstName
            L'extrémité obtiennent
            Placer (valeur de ByVal comme corde)
                _firstName = valeur
            Ensemble d'extrémité
        Propriété d'extrémité
Classe d'extrémité

 _
Disque public de classe

L'essai " clair " de >


I de class= de l'extrémité Class
1 de >

Fonction publique GetAppointments (startDate de ByVal en tant qu'endDate de date-heure, de ByVal comme date-heure) comme instruments IOnsiteScheduler.GetAppointments de liste (d'OnsiteAppointment)

            Essai

                Faibles nominations en tant que nouvelle liste (d'OnsiteAppointment)
…
                    Faible nomination en tant que nouvel OnsiteAppointment
                    appointment.ID = lecteur (« appointmentId »)
                    appointment.StartDate = reader.SafeDate (« startDate »)
                    .                    
                    Faible client en tant que nouveau client
                    customer.FirstName = reader.SafeString (« firstName »)

                   rendez-vous. Client = client
                   rendez-vous. Ajouter (rendez-vous)
                   renvoyer les rendez-vous
Finir les travaux " clairs " de >


This de class= de Function

HTTP/1.1 504 - recevoir Failure
Content-Type : texte/html
Connection : close
Timestamp : 2h37 : 54.822

ReadResponse () a échoué : Le serveur n'a pas renvoyé une réponse pour cette demande.                    le

… et naturellement les échouer de client ayant reçu cette question de message.

My est : Quel suis-je faisant mal ici ? le
Obviously « disque » n'a aucun problème étant exposé, puisqu'OnsiteAppointment obtient exposé bien. Il n'y a aucun problème exposant le type niché (OnsiteAppointment.Customer) aussi bien. Ainsi pourquoi s'inquiéterait-il si le client hérite d'un type qui fonctionne bien comme classe basse pour l'autre classe ?

Are là des types de restrictions au niveau de l'emboîtement/de mettre en référence d'autres types en renvoyant des objets ? Je voudrais s'abstenir à télécharger juste les collections vides plates et alors à « les attacher vers le haut de » sur le client - je préférerais télécharger la structure d'objet juste comme je l'ai dans l'aide du

Any de couche d'affaires… serais grand !
Thanks

Environment: .NET 4.0, CONTRE 2010, IIS 7, Win7 64bit
class= de

Réponse : WCF a niché les types complexes

Bonjour,

Dans WCF vous ne pouvez pas substituer une classe secondaire à une classe basse directement comme vous pouvez dans C#.

Vous pouvez employer un attribut pour pouvoir passer la classe au client. Ceci est fait sur l'interface de service

KnownType - permet à la classe d'être passé dans tous tous les contrats et opérations using la classe basse.
C'est appliedto le DataContract.
C# : [KnownType (typeof (client))]

ServiceKnownType - permet à la classe d'être passé seulement pour l'opération sur laquelle elle est définie.
Ceci est appliqué au contrat de service.

Personnellement j'emploie ServiceKnownType
C# : [ServiceKnownType (typeof (client))]
VB.NET : ustomer))> _

Aller voir ici
http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx

Espérer que ceci aide,

Darren
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us