@@ -262,21 +262,20 @@ private TDictionary DeserializeDocumentRepresentation(BsonDeserializationContext
262262 bsonReader . ReadStartDocument ( ) ;
263263 while ( bsonReader . ReadBsonType ( ) != BsonType . EndOfDocument )
264264 {
265- var key = DeserializeKeyString ( bsonReader . ReadName ( ) ) ;
265+ var key = DeserializeKeyString ( bsonReader . ReadName ( ) , context . SerializationDomain ) ;
266266 var value = _valueSerializer . Deserialize ( context ) ;
267267 dictionary . Add ( key , value ) ;
268268 }
269269 bsonReader . ReadEndDocument ( ) ;
270270 return dictionary ;
271271 }
272272
273- private object DeserializeKeyString ( string keyString )
273+ private object DeserializeKeyString ( string keyString , IBsonSerializationDomain serializationDomain )
274274 {
275275 var keyDocument = new BsonDocument ( "k" , keyString ) ;
276276 using ( var keyReader = new BsonDocumentReader ( keyDocument ) )
277277 {
278- //QUESTION Is it correct we only need a default domain here?
279- var context = BsonDeserializationContext . CreateRoot ( keyReader , BsonSerializer . DefaultSerializationDomain ) ;
278+ var context = BsonDeserializationContext . CreateRoot ( keyReader , serializationDomain ) ;
280279 keyReader . ReadStartDocument ( ) ;
281280 keyReader . ReadName ( "k" ) ;
282281 var key = _keySerializer . Deserialize ( context ) ;
@@ -321,19 +320,18 @@ private void SerializeDocumentRepresentation(BsonSerializationContext context, T
321320 bsonWriter . WriteStartDocument ( ) ;
322321 foreach ( DictionaryEntry dictionaryEntry in value )
323322 {
324- bsonWriter . WriteName ( SerializeKeyString ( dictionaryEntry . Key ) ) ;
323+ bsonWriter . WriteName ( SerializeKeyString ( dictionaryEntry . Key , context . SerializationDomain ) ) ;
325324 _valueSerializer . Serialize ( context , dictionaryEntry . Value ) ;
326325 }
327326 bsonWriter . WriteEndDocument ( ) ;
328327 }
329328
330- private string SerializeKeyString ( object key )
329+ private string SerializeKeyString ( object key , IBsonSerializationDomain serializationDomain )
331330 {
332331 var keyDocument = new BsonDocument ( ) ;
333332 using ( var keyWriter = new BsonDocumentWriter ( keyDocument ) )
334333 {
335- //QUESTION Is it correct we only need a default domain here?
336- var context = BsonSerializationContext . CreateRoot ( keyWriter , BsonSerializer . DefaultSerializationDomain ) ;
334+ var context = BsonSerializationContext . CreateRoot ( keyWriter , serializationDomain ) ;
337335 keyWriter . WriteStartDocument ( ) ;
338336 keyWriter . WriteName ( "k" ) ;
339337 _keySerializer . Serialize ( context , key ) ;
@@ -669,7 +667,7 @@ private TDictionary DeserializeDocumentRepresentation(BsonDeserializationContext
669667 bsonReader . ReadStartDocument ( ) ;
670668 while ( bsonReader . ReadBsonType ( ) != BsonType . EndOfDocument )
671669 {
672- var key = DeserializeKeyString ( bsonReader . ReadName ( ) ) ;
670+ var key = DeserializeKeyString ( bsonReader . ReadName ( ) , context . SerializationDomain ) ;
673671 var value = _lazyValueSerializer . Value . Deserialize ( context ) ;
674672 accumulator . Add ( new KeyValuePair < TKey , TValue > ( key , value ) ) ;
675673 }
@@ -678,13 +676,12 @@ private TDictionary DeserializeDocumentRepresentation(BsonDeserializationContext
678676 return FinalizeAccumulator ( accumulator ) ;
679677 }
680678
681- private TKey DeserializeKeyString ( string keyString )
679+ private TKey DeserializeKeyString ( string keyString , IBsonSerializationDomain serializationDomain )
682680 {
683681 var keyDocument = new BsonDocument ( "k" , keyString ) ;
684682 using ( var keyReader = new BsonDocumentReader ( keyDocument ) )
685683 {
686- //QUESTION Is it correct we only need a default domain here?
687- var context = BsonDeserializationContext . CreateRoot ( keyReader , BsonSerializer . DefaultSerializationDomain ) ;
684+ var context = BsonDeserializationContext . CreateRoot ( keyReader , serializationDomain ) ;
688685 keyReader . ReadStartDocument ( ) ;
689686 keyReader . ReadName ( "k" ) ;
690687 var key = _lazyKeySerializer . Value . Deserialize ( context ) ;
@@ -729,19 +726,18 @@ private void SerializeDocumentRepresentation(BsonSerializationContext context, T
729726 bsonWriter . WriteStartDocument ( ) ;
730727 foreach ( var keyValuePair in value )
731728 {
732- bsonWriter . WriteName ( SerializeKeyString ( keyValuePair . Key ) ) ;
729+ bsonWriter . WriteName ( SerializeKeyString ( keyValuePair . Key , context . SerializationDomain ) ) ;
733730 _lazyValueSerializer . Value . Serialize ( context , keyValuePair . Value ) ;
734731 }
735732 bsonWriter . WriteEndDocument ( ) ;
736733 }
737734
738- private string SerializeKeyString ( TKey key )
735+ private string SerializeKeyString ( TKey key , IBsonSerializationDomain serializationDomain )
739736 {
740737 var keyDocument = new BsonDocument ( ) ;
741738 using ( var keyWriter = new BsonDocumentWriter ( keyDocument ) )
742739 {
743- //QUESTION Is it correct we only need a default domain here?
744- var context = BsonSerializationContext . CreateRoot ( keyWriter , BsonSerializer . DefaultSerializationDomain ) ;
740+ var context = BsonSerializationContext . CreateRoot ( keyWriter , serializationDomain ) ;
745741 keyWriter . WriteStartDocument ( ) ;
746742 keyWriter . WriteName ( "k" ) ;
747743 _lazyKeySerializer . Value . Serialize ( context , key ) ;
0 commit comments