Stworzyłem proste rozszerzenie do sterownika MongoDB, które ponownie serializuje dokument BSON przy użyciu Json.NET i deserializuje go jako dynamiczną. Dołączając następującą klasę, możesz po prostu przekonwertować swoje zapytania MongoDB na dynamiczne w ten sposób
dynamic obj = collection.FindOneByIdAs<BsonDocument>(someObjectId).ToDynamic();
Klasa rozszerzenia:
public static class MongoDynamic
{
private static System.Text.RegularExpressions.Regex objectIdReplace = new System.Text.RegularExpressions.Regex(@"ObjectId\((.[a-f0-9]{24}.)\)", System.Text.RegularExpressions.RegexOptions.Compiled);
/// <summary>
/// deserializes this bson doc to a .net dynamic object
/// </summary>
/// <param name="bson">bson doc to convert to dynamic</param>
public static dynamic ToDynamic(this BsonDocument bson)
{
var json = objectIdReplace.Replace(bson.ToJson(), (s) => s.Groups[1].Value);
return Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
}
}
Pamiętaj, aby odwołać się do pliku Newtonsoft.Json.dll (http://james.newtonking.com /projekty/json-net.aspx )