MongoDB benutzerdefinierte Serializer-Implementierung

8

Ich bin neu in MongoDB und versuche, den C # -Treiber dazu zu bringen, F # -Klassen zu serialisieren. Ich habe es mit dem Klassenautomatiker arbeiten mit veränderlichen F # Felder & amp; ein parameterloser Konstruktor, aber ich muss wirklich die Unveränderlichkeit beibehalten, also begann ich, einen IBsonSerializer zu implementieren, um eine benutzerdefinierte Serialisierung durchzuführen. Ich habe keine Dokumentation gefunden, um eine davon zu schreiben, also habe ich gerade versucht, aus dem Quellcode des Treibers zu schließen.

Ich bin auf ein Problem gestoßen, bei dem, wenn die Deserialize-Methode für den Serializer aufgerufen wird, CurrentBsonType auf EndOfDocument und nicht auf den Start gesetzt wird, wie ich es erwarte. Ich habe das Äquivalent in C # geschrieben, nur um sicherzugehen, dass es keine F # -Verrücktheit war, aber das Problem besteht weiterhin. Der Serialisierungsteil scheint gut zu funktionieren und kann von der Shell abgefragt werden. Hier ist der Beispielcode:

%Vor%

Dies wird mit FileFormatException in Deserialize ausgelöst, wenn CurrentBsonType kein Document ist. Ich verwende die neueste Version 1.4 der Treiberquelle.

    
fhusb 20.03.2012, 14:39
quelle

1 Antwort

7

Ich habe das am Ende herausgefunden. Ich hätte bsonReader.GetCurrentBsonType () anstelle von bsonReader.CurrentBsonType verwenden sollen. Dies liest den BsonType aus dem Puffer ein, anstatt nur das letzte Ding dort zu betrachten. Ich habe auch einen nachfolgenden Fehler beim Deinstallieren behoben. Die aktualisierte Methode sieht folgendermaßen aus:

%Vor%     
fhusb 21.03.2012, 17:02
quelle

Tags und Links