Serialization

Tags:    .net

Hej Udviklere,

Mig og nogle gutter er i gang med vores 3. semester projekt på datamatiker studiet, og har et lille problem.
Vi står og skal serializere et object som har en attribut der er 2 dimensionel af typen Edge (til noget graph værk). Det går fint at serialize det, men når vi deserializer det får vi at vide man ikke kan convertere en Edge[] til en Edge[,].

Vi har testet med JavaScriptSerializer, BinaryFormatter mv. Men det vil bare ikke som vi vil. Objektet er vores graph, og den skal sendes over en TCP forbindelse til en webservice. Vi kan sagtens sende den til webservicen, men problemet er den ikke vil blive deserializet igen.

Nogen der har et link eller én svar på hvad det kan skyldes.

På forhånd tak :)



Indlæg senest redigeret d. 01.12.2010 20:32 af Bruger #6559
7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Problemet i jeres anden proces er at den ikke kender den samme datatype (lyder det til) typisk vil man således lave en seperart .dll (class library) med definitionerne i som begge processer så deler. I det class library skal definitionen så findes, og der skal serialiseret fra det, og til det...




Lav et objekt i stedet for et [,] der indeholder de to punkter, og så lav en liste af dem. Den skulle være ligetil at serializere.



Ok mange tak, vi valgte at droppe at serializere vores object. BinaryFormatter havde ingen problemer i det, MEN! Når man skal deserializere det igen, (i en anden process) så skal der linkes til det program der serializerede det's Assembly for at man kan deserializere den (Lyder underligt og ja).

Så efter at have brugt 6 timer på serializering, valgte vi bare at sende de enkelte vertices og edges over vores TCP forbindelse.

Men mange tak for dit foreslag, jeg vil prøve at have det i baghovedet :)



Indlæg senest redigeret d. 02.12.2010 15:58 af Bruger #6559
Ja, det er faktisk også det vi kom frem til, men den klagede stadigvæk over, at de ikke var ens... Men vi serializerede så ikke ud fra dll filen, men en class magen til den, der var i dllen



Indlæg senest redigeret d. 02.12.2010 21:16 af Bruger #6559
Jeg siger i hvert fald tak for hjælpen. :)



Det er desværre ikke nok at de bare er ens, det skal være den samme klasse. Namespace osv. spiller ind i de-serialiseringen. Så det skal være den samme, derfor det med at dele samme dll. i begge processer, så skal man også kun rette eet sted når man vil ændre i koden.



Det er vi også kommet lidt frem til. Vi valgte at springe over hvor gærdet var lavest (synes vi). Jeg ved fra en anden gruppe, at de bøvlede med det samme, men så havde du i mellemtiden svaret, og de fik gavn af den information. Jeg har dog lige skrevet en note bag øret så jeg ved det til næste gang. ;)



t