これが2つのBsonドキュメントのコレクションであるとしましょう
{
"_id": "...",
"name": "Test1",
"sub": {
"street": "134 Fake Street",
"city": "NoWhere"
}
},
{
"_id": "...",
"name": "Test2",
"sub": {
"height": "10",
"width": "20",
"sub2": {
"type": "something"
}
}
}
ここで、最初のレベルは構造化されたクラスですが、サブレベルは完全に構造化されていない可能性があり、さらにいくつかのレベルの深さでネストされたドキュメントを持つことができます。
このドキュメントをC#クラスに逆シリアル化するにはどうすればよいですか?私が見たすべてのサンプルは、ネストされたドキュメントの構造を想定しています。
次のクラスはエラーを出します:
public class Report
{
[BsonId]
public ObjectId _id { get; set; }
public string name { get; set; }
public BsonDocument sub { get; set; }
}
データコントラクト名が「...」の「MongoDB.Bson.BsonString」と入力する必要はありません。DataContractResolverを使用するか、既知のタイプのリストに静的に不明なタイプを追加することを検討してください。たとえば、KnownTypeAttribute属性を使用するか、DataContractSerializerに渡される既知のタイプのリストに追加します。
編集
私がやろうとしていることは、まったく意味がないかもしれません。1つのBsonDocumentを使用し、構造化クラスなしですべてを手動で処理する方がよいでしょうか。