using System; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; using MongoDB.Bson.Serialization.Attributes; using System.Collections.Generic; namespace Application { [BsonKnownTypes(typeof(Cat), typeof(Dog))] public class Pet { public string Name {get; set;} } public class Cat : Pet { public string Toy {get; set;} } public class Dog : Pet { public string Toy {get; set;} } public class House { public ObjectId Id {get; set;} public List Pets {get; set;} } class Program { static void Main(string[] args) { var mongoURL = new MongoUrl("mongodb://localhost:27017/test"); var client = new MongoClient(mongoURL); var database = client.GetDatabase("test"); var collection = database.GetCollection("myhouse"); /* Part A: Serialize */ var mypets = new List(); mypets.Add(new Cat{ Name="Izzy", Toy="scratchy"} ); mypets.Add(new Dog{ Name="Dotty", Toy="plushy"} ); collection.InsertOne(new House { Pets=mypets}); /* Part B: Deserialize */ var document = collection.Find(new BsonDocument()).FirstOrDefault(); Console.WriteLine(document.ToJson()); } } }