@@ -27,6 +27,7 @@ namespace MongoDB.Bson.Serialization.Serializers
2727 /// <typeparam name="TDictionary">The type of the dictionary.</typeparam>
2828 public abstract class DictionarySerializerBase < TDictionary > :
2929 ClassSerializerBase < TDictionary > ,
30+ IBsonDocumentSerializer ,
3031 IBsonDictionarySerializer
3132 where TDictionary : class , IDictionary
3233 {
@@ -131,6 +132,22 @@ obj is DictionarySerializerBase<TDictionary> other &&
131132 /// <inheritdoc/>
132133 public override int GetHashCode ( ) => 0 ;
133134
135+ /// <inheritdoc/>
136+ public bool TryGetMemberSerializationInfo ( string memberName , out BsonSerializationInfo serializationInfo )
137+ {
138+ if ( _dictionaryRepresentation != DictionaryRepresentation . Document )
139+ {
140+ serializationInfo = null ;
141+ return false ;
142+ }
143+
144+ serializationInfo = new BsonSerializationInfo (
145+ memberName ,
146+ _valueSerializer ,
147+ _valueSerializer . ValueType ) ;
148+ return true ;
149+ }
150+
134151 // protected methods
135152 /// <summary>
136153 /// Deserializes a value.
@@ -338,6 +355,7 @@ private string SerializeKeyString(object key)
338355 public abstract class DictionarySerializerBase < TDictionary , TKey , TValue > :
339356 ClassSerializerBase < TDictionary > ,
340357 IBsonArraySerializer ,
358+ IBsonDocumentSerializer ,
341359 IBsonDictionarySerializer
342360 where TDictionary : class , IEnumerable < KeyValuePair < TKey , TValue > >
343361 {
@@ -492,6 +510,22 @@ public bool TryGetItemSerializationInfo(out BsonSerializationInfo serializationI
492510 return true ;
493511 }
494512
513+ /// <inheritdoc/>
514+ public bool TryGetMemberSerializationInfo ( string memberName , out BsonSerializationInfo serializationInfo )
515+ {
516+ if ( _dictionaryRepresentation != DictionaryRepresentation . Document )
517+ {
518+ serializationInfo = null ;
519+ return false ;
520+ }
521+
522+ serializationInfo = new BsonSerializationInfo (
523+ memberName ,
524+ _lazyValueSerializer . Value ,
525+ _lazyValueSerializer . Value . ValueType ) ;
526+ return true ;
527+ }
528+
495529 // protected methods
496530 /// <summary>
497531 /// Deserializes a value.
0 commit comments