public void ReserializationWithoutDataLoss() { EntityMapping.AddMappingProcessor(new TypeDiscoveryProcessor()); EntityMapping.RegisterType(typeof(CollectionBaseModel)); var initialEntity = new CollectionBaseModel { KnownList = new List <KnownBaseModel> { new KnownBaseModel(), new UnknownChildModel(), new UnknownGrandChildModel() } }; var document = new BsonDocument(); using (var writer = new BsonDocumentWriter(document)) { BsonSerializer.Serialize(writer, initialEntity); } var deserializedResult = BsonSerializer.Deserialize <CollectionBaseModel>(document); Assert.AreEqual(3, deserializedResult.KnownList.Count); Assert.IsInstanceOfType(deserializedResult.KnownList[0], typeof(KnownBaseModel)); Assert.IsInstanceOfType(deserializedResult.KnownList[1], typeof(UnknownChildModel)); Assert.IsInstanceOfType(deserializedResult.KnownList[2], typeof(UnknownGrandChildModel)); }
public void ReserializationWithoutDataLoss() { var entityMapper = new EntityMapper <CollectionBaseModel>(); var initialEntity = new CollectionBaseModel { KnownList = new List <KnownBaseModel> { new KnownBaseModel(), new UnknownChildModel(), new UnknownGrandChildModel() } }; var document = new BsonDocument(); using (var writer = new BsonDocumentWriter(document)) { BsonSerializer.Serialize(writer, initialEntity); } var deserializedResult = BsonSerializer.Deserialize <CollectionBaseModel>(document); Assert.AreEqual(3, deserializedResult.KnownList.Count); Assert.AreEqual(typeof(KnownBaseModel), deserializedResult.KnownList[0].GetType()); Assert.AreEqual(typeof(UnknownChildModel), deserializedResult.KnownList[1].GetType()); Assert.AreEqual(typeof(UnknownGrandChildModel), deserializedResult.KnownList[2].GetType()); }