2016-03-24 9 views
2

In MongoDB habe ich eine Klasse mit einer Eigenschaft MyProperty vom Typ object.MongoDB Unbekannter Diskriminatorwert => zu JSonDocument deserialisieren

public MyClass 
{ 
    public object MyProperty; 
    public string Prop1; 
    public DateTime Prop2; 
    public int Prop3; 
} 

Serialisierung zu MongoDB funktioniert ohne Probleme eine JSon dieser Art zu schaffen:

MyProperty" : { 
       "_t" : "ExampleClass", 
      [...] 
} 

Aber wenn ich versuche es noch seserialize ich folgende Fehlermeldung erhalten:

An error occurred while deserializing the MyProperty property of class MyClass: Unknown discriminator value 'ExampleClass'.

I‘ Ich möchte MyProperty zu einem einfachen generischen BsonDocument oder zu einer Zeichenfolge deserialisieren.

+0

Bitte erläutern Sie Ihre Frage anhand von Beispieldokumenten. Auch was meinst du nur mit Eigentum? Sie können Bson Deserializer verwenden, um alle gültigen JSON in Bson-Dokument zu konvertieren. – Saleem

+0

@Saleem Ich habe versucht, das Beispiel zu verdeutlichen. Ich möchte nur die Eigenschaft MyProperty als BsonDocument lesen. Die anderen Eigenschaften von myclass müssen für ihren Typ deserialisiert werden. – Revious

+0

Wie wäre es, wenn Sie Ihren Eigenschaftstyp anstelle von Objekt in BsonDocument ändern? – Saleem

Antwort

2

Das _t speichert Ihren benutzerdefinierten Klassennamen. Sie müssen dieses benutzerdefinierte Klassen-Mapping registrieren, damit mongo weiß, welches Objekt beim Deserialisieren verwendet werden soll. Hier ist ein Codebeispiel (das Sie nur einmal zu Beginn Ihrer Anwendung aufrufen müssen):

if (!BsonClassMap.IsClassMapRegistered(typeof(ExampleClass))) 
{ 
    BsonClassMap.RegisterClassMap<ExampleClass>(); 
} 
Verwandte Themen