Как десериализовать объект BsonDocument обратно в класс - PullRequest
28 голосов
/ 28 февраля 2012

Как десериализовать объект BsonDocument обратно в класс после получения его с сервера?

QueryDocument _document = new QueryDocument("key", "value");
MongoCursor<BsonDocument> _documentsReturned = _collection.FindAs<BsonDocument>(_document);

foreach (BsonDocument _document1 in _documentsReturned)
{
    //deserialize _document1
    //?
}

Десериализовать ли с помощью BsonReader?

1 Ответ

68 голосов
/ 28 февраля 2012

На самом деле существует три способа:

1. Укажите тип, который вы хотите загрузить непосредственно в FindAs<>

var docs = _collection.FindAs<MyType>(_document);

2.Дезериализовать документ с помощью BsonSerializer:

BsonSerializer.Deserialize<MyType>(doc);

3.Картеру документа bson вручную в ваш класс:

var myClass = new Mytype();
myClass.Name = bsonDoc["name"].AsString;

В большинстве случаев вы согласны с первым подходом.Но иногда, когда ваши документы не структурированы, вам может понадобиться третий подход.

...