|
|
|
|
Guten Tag die Herren und Herrinnen. Ich bin zurück aus Wacken, ich stinke wie eine ganze Horde Elche und ich geh jetzt erstmal 10 Stunden duschen...
|
|
|
|
|
|
|
Endlich hab ich hier mein kleines Serialisierungs-Problem behoben. Falls jemand da auch mal drüber stolpen sollte:
Ich will eine Klasse mit dem XmlSerializer "serialisieren". Das geht normalerweise problemlos, es sei denn man kommt an den Punkt, wo die zu serialisierende Klasse eine "Collection" enthält. Der XmlSerializer ist auch im Stande dann aus einer Liste von Objekten diese entsprechend in Xml zu verwandeln und zurück. Das Problem trifft erst auf, wenn man diese "Collection"-Eigenschaft als "read-only" markiert, das heißt es existiert keine öffentliche Get-Methode. Dieses Verhalten wird auch von Microsoft beim Entwurf von Klassen empfohlen und sorgt dafür, dass eine externe Klasse zwar die gesamte "Collection" verändern kann, diese aber nicht löschen oder die Referenz ändern.
Der XmlSerializer setzt aber für diesen Fall vorraus, dass auch eine öffentlicher Get-Methode existiert, damit er falls die "Collection"-Eigenschaft null ist, eine Instanz erzeugen kann.
Bisher hatte ich es nur mit dem Interface "IList" hinbekommen, dass er auf diese Set-Methode verzichtet, da er davon selbst keine Instanz erzeugen kann. Sollte also die "Collection"-Eigenschaft null sein, wird eine Exception geworfen. Gut für mich, aber IList ist halt nicht typisiert und daher unbrauchbar. Selbst wenn ich eigene Collections direkt von IList abgeleitet habe, wollte es nicht funktionieren.
Da der .NET Quelltext zwar hilfreich war, ich aber nicht an die entsprechende Stelle springen konnte, wo diese Behandlung von Collections zu finden ist, habe ich weiter rumprobiert.
Der XmlSerializer erstellt für den Datentyp, der zu serialisieren ist, eine eigene Klasse. Diese dient dafür, eine angepasste Implementierung für jedes zu serialisierende Objekt zu haben und gleichzeitig, diese Klasse immer wiederverwenden zu können. Natürlich spart es auch Zeit, wenn man während der Serialisierung nicht immer noch die sog. "Reflection" bemühen muss, um die notwendigen Informationen aus dem Klassentyp zu lesen. Mit eigener Klasse ist wirklich eine Klassendefinition mit Methoden etc. gemeint; diese kann man sich bei entsprechender Konfiguration dann auch direkt mal ansehen. Nicht ansehnlich, aber hilfreich wars.
Das obige Verhalten, dass eine Instanz der Collection erzeugt wird, falls diese null ist, ist gleichzeitig auch das Problem. Die öffentliche Set-Methode würde eigentlich nicht benutzt, da ich selbst dafür sorge, dass die "Collection" keine Null-Referenz ist; aber sie steht im Quelltext drin und dort beschwert sich der Compiler auch entsprechend, dass er diese Zuweisung nicht ausführen kann; selbst wenn diese natürlich nie stattfindet.
Ergebnis: Die "Collection"-Klasse darf keinen Standardkonstruktor besitzen, in dem Fall merkt der XmlSerializer dann, dass er keine Instanz erzeugen kann und wirft eine Exception; diese wird aber nur geworfen, wenn der Wert "Collection"-Eigenschaft null ist. Bei mir nie der Fall und Problem ist gelöst, wenn auch nicht ganz so hübsch. Aber bei meiner sehr ausgiebigen Google-Recherche habe ich diese Lösung nicht finden können.
So genug gelangweilt, aber vielleicht hilft es ja irgendwann mal irgendwem
|
|
|
|
|
|
|
| Zitat von SirSiggi
Guten Tag die Herren und Herrinnen. Ich bin zurück aus Wacken, ich stinke wie eine ganze Horde Elche und ich geh jetzt erstmal 10 Stunden duschen...
| |
Ich bin auch wieder da. War lustig. Und so doll hast du Freitag gar nicht gestunken.
Geduscht hab ich schon. Genauso wie einmal richtig schön den Bierschiss abgelassen.
|
|
|
|
|
|
|
| Zitat von SkunkyVillage
Genauso wie einmal richtig schön den Bierschiss abgelassen.
| |
Bääääääh
|
|
|
|
|
|
|
| Zitat von stupididi
| Zitat von SkunkyVillage
Genauso wie einmal richtig schön den Bierschiss abgelassen.
| |
Bääääääh
| |
Hm. Nach fünf Tagen sammelt sich ordentlich was an.
|
|
|
|
|
|
|
mein paddelurlaub für die nächste woche ist grad geplatzt. ich hasse meine kumpels.
ich würd ja jetzt frustsaufen, aber ich muss heut abend noch arbeiten. so hab ich nur lust, jemandem so richtig aufs maul zu hauen. irgendwie hoff ich grad, dass mich heut jemand provoziert.
|
|
|
|
|
|
|
Wo sollte es denn hingehen?
|
|
|
|
|
|
|
seenplatte südöstlich der müritz.
|
|
|
|
|
|
|
Nabend..
|
|
|
|
|
|
|
Tach...
|
|
|
|
|
|
|
|
|
|
|
Ich freu mich erstmal auf ein richtig schönes Bett gleich.
|
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
Kann nicht schlafen.
| |
dito!
|
|
|
|
|
|
|
Scheißen soll helfen.
|
|
|
|
|
|
|
Ich werd gleich nachm abendbrot noch ne runde zocken. Gegen 4 oder 5 dürfte ich dann auch müde werden
|
|
|
|
|
|
|
| Zitat von TriggerTG
Ich werd gleich nachm abendbrot noch ne runde zocken. Gegen 4 oder 5 dürfte ich dann auch müde werden
| |
Was spielste?
|
|
|
|
|
|
|
css
Wie heilen die Wunden, die Siggi dir zugezogen hat?
|
|
|
|
|
|
|
| Zitat von TriggerTG
css
Wie heilen die Wunden, die Siggi dir zugezogen hat?
| |
Die hab ich direkt mit Bier betäubt. Kann ich eine Runde mitspielen? Hab eh nichts Besseres zu tun.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Morgen. Immer noch Müde wie sau.
|
|
|
|
|
|
|
Guten Morgen..
Ich bin auch noch muede.. jetzt erstmal duschen und dann mal schauen..
|
|
|
|
|
|
|
Morgen. dito.
|
|
|
|
|
|
|
moin. Muss heute alleine zum SPort. Bäh
|
|
|
|
|
|
|
Moin moin, erstmal zum Zoll die T-Shirts endlich abholen \o/
|
|
|
|
|
|
|
moin.
|
|
|
|
|
|
|
Eben grade habe ich bemerkt das ich als ich mir gestern Abend den Wecker gestellt habe auch meine Uhr verstellt haben muss und so eine ganze verdammte Stunde zu frueh aufgestanden bin
|
|
|
|
|
|
Update
|
|
|
|
|
|
|
|
Bist DU das???
Hab dich ganz anders in Erinnerung! Gratulation, dass du nun aussiehst wie ein waschechter Informatiker
|
|
|
|
|
|
|
Fick Dich, mir gehts gut
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |