// methods protected override void SerializeRequest(BsonSerializationContext context, WriteRequest request) { var insertRequest = (InsertRequest)request; var document = insertRequest.Document; if (document == null) { throw new ArgumentException("Batch contains one or more null documents."); } var serializer = insertRequest.Serializer; if (serializer == null) { var actualType = document.GetType(); if (_cachedSerializerType != actualType) { _cachedSerializer = BsonSerializer.LookupSerializer(actualType); _cachedSerializerType = actualType; } serializer = _cachedSerializer; } var bsonWriter = (BsonBinaryWriter)context.Writer; var savedCheckElementNames = bsonWriter.CheckElementNames; try { bsonWriter.PushMaxDocumentSize(MaxDocumentSize); bsonWriter.CheckElementNames = _checkElementNames; var documentNominalType = serializer.ValueType; var documentContext = context.CreateChild(documentNominalType); serializer.Serialize(documentContext, document); } finally { bsonWriter.PopMaxDocumentSize(); bsonWriter.CheckElementNames = savedCheckElementNames; } }
// methods protected override void SerializeRequest(BsonSerializationContext context, WriteRequest request) { var insertRequest = (InsertRequest)request; var document = insertRequest.Document; var actualType = document.GetType(); if (_cachedSerializerType != actualType) { _cachedSerializer = BsonSerializer.LookupSerializer(actualType); _cachedSerializerType = actualType; } var serializer = _cachedSerializer; var bsonWriter = (BsonBinaryWriter)context.Writer; bsonWriter.PushMaxDocumentSize(MaxDocumentSize); bsonWriter.PushElementNameValidator(CollectionElementNameValidator.Instance); try { var documentNominalType = serializer.ValueType; var documentContext = context.CreateChild(documentNominalType); serializer.Serialize(documentContext, document); } finally { bsonWriter.PopMaxDocumentSize(); bsonWriter.PopElementNameValidator(); } }