Fråga : WCF bygga bo komplexa typer

Hi

I har ett problem exponering en klassificera via WCF, när den hänvisar till another anmärker, som jag skulle något liknande för att överföra ”besegrar binda” som väl.
To gör den lättare, är här förenklad strukturerar som visar problemet:

There är 3 klassificerar: Rekord (en basera klassificerar), OnsiteAppointment och kund (båda övertar från rekord). för class=" codeSnippet " för

1 för >

 _,
Allmänhet klassificerar OnsiteAppointment
Övertar rekordet
Privat _startDate som DateTime
 _,
Offentlig egenskap StartDate () som DateTime
Få
Gå _startDate tillbaka
Avsluta får
Uppsättning (ByVal värderar som DateTime),
_startDate = värderar
Avsluta uppsättningen
Avsluta egenskapen
Privat _customer som kund
 _,
Offentlig egenskapskund () som kund
Få
Gå _customer tillbaka
Avsluta får
Uppsättning (ByVal värderar som kund),
_customer = värderar
Avsluta uppsättningen
Avsluta egenskapen
Avsluta klassificerar
 _,
Allmänhet klassificerar kunden
Övertar rekordet
Privat _firstName som stränger
 _,
Offentlig egenskap FirstName () som stränger
Få
Gå _firstName tillbaka
Avsluta får
Uppsättning (ByVal värderar som stränger),
_firstName = värderar
Avsluta uppsättningen
Avsluta egenskapen
Avsluta klassificerar
 _,
Allmänhet klassificerar rekordet
Avsluta försök för >

I för Class<-/pre>

1 för >

Allmänhet fungerar GetAppointments (ByVal startDate som dateTime-, ByVal endDate som DateTime) som listar (av OnsiteAppointment) genomför IOnsiteScheduler.GetAppointments
Försök
Dunkla tidsbeställningar som nya listar (av OnsiteAppointment)
…,
Dunkel tidsbeställning som nya OnsiteAppointment
appointment.ID = avläsare (”appointmentId”)
appointment.StartDate = reader.SafeDate (”startDate”)
.
Dunkel kund som ny kund
customer.FirstName = reader.SafeString (”firstName”)
tidsbeställning. Kund = kund
tidsbeställningar. Tillfoga (tidsbeställning)
gå tidsbeställningar tillbaka
Avsluta arbeten för >

This för Function<-/pre>

HTTP/1.1 504 - motta Failure
Content-Type: text/html
Connection: close
Timestamp: 02:37: 54.822

ReadResponse () missade: Serveren gick inte ett svar för denna förfrågan tillbaka.                    

… och beställarekuggningarna som har mottagit denna message.

My, ifrågasätter naturligtvis är: Vilken förmiddag mig som orätt här gör?
Obviously ”rekord” har inget problem att vara utsatt, sedan OnsiteAppointment får den utsatta brunnen. Det finns inte något problem som exponerar den bygga bo typen (OnsiteAppointment.Customer) som väl. Varför så skulle det, omsorg, om kunden övertar från en typ som är den funktionsdugliga brunnen, som en basera klassificerar för annan, klassificerar?

Are tillbaka där några typer av begränsningar på det jämnt av att bygga bo/som hänvisar till andra typer, när gå anmärker? Jag skulle något liknande för att avstå från precis att nedladda vanliga tomma samlingar och därefter ”band dem upp” på beställaren - jag skulle föredrar att nedladda anmärka strukturerar, som precis jag har den i hjälpen för affärslagrar…

Any skulle för att vara stor!
Thanks

Environment: .NET 4.0, VS 2010, IIS 7, Win7 64bit
" klar "

Svar : WCF bygga bo komplexa typer

Hi,

I WCF som du inte kan ersätta en sub, klassificera för en basera klassificerar direkt, som du kan i C#.

Du kan använda ett attribut för att vara kompetent att passera klassificera till beställaren. Detta göras på det tjänste- har kontakt

KnownType - låter klassificera vara den passerade alltigenom som allt avtalar, och funktioner using basera klassificerar.
Denna är appliedtoen DataContracten.
C#: [KnownType (typeof (kund))]

ServiceKnownType - låter klassificera passeras endast för funktionen som den definieras på.
Detta appliceras till det tjänste- avtalar.

Personligen jag använder ServiceKnownType
C#: [ServiceKnownType (typeof (kund))]
VB.NET: ustomer))> _,

Ha en look här
http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx

Hoppas detta hjälper,

Darren
Andra lösningar  
 
programming4us programming4us