2016-03-24 4 views
2

MongoDBには、タイプobjectのMyPropertyというプロパティを持つクラスがあります。 MongoDBのにMongoDB Unknown discriminator value => JSonDocumentにデシリアライズ

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

シリアライゼーションは、このタイプのJSONを作成問題なく動作します。

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

しかし、私は次のエラーを取得することをseserializeんしようとすると:

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

私は」 MyPropertyを単純な汎用BsonDocumentまたは文字列に逆シリアル化するのが好きです。

+0

サンプル文書をサポートしてあなたの質問を詳しく説明してください。また、プロパティだけではどういう意味ですか? bsonデシリアライザを使用して、有効なjsonをbsonドキュメントに変換できます。 – Saleem

+0

@Saleem例を明確にしようとしました。 MyPropertyというプロパティだけをBsonDocumentとして読み込むようにします。 myclassのその他のプロパティは、その型に逆シリアル化する必要があります。 – Revious

+0

オブジェクトではなくプロパティの種類をBsonDocumentに変更する方法はありますか? – Saleem

答えて

2

_tにはカスタムクラス名が格納されます。 mongoがデシリアライズ時に使用するオブジェクトを知るためには、このカスタムクラスマッピングを登録する必要があります。ここでのコード例は、(のみアプリケーションの冒頭で一度、これを呼び出す必要がなければならない)である。

if (!BsonClassMap.IsClassMapRegistered(typeof(ExampleClass))) 
{ 
    BsonClassMap.RegisterClassMap<ExampleClass>(); 
} 
関連する問題