Skip to content

Commit e54c7b7

Browse files
committed
CSHARP-5572: Revert removal of IBsonDocumentSerializer from DictionarySerializerBase
1 parent cc0e784 commit e54c7b7

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/MongoDB.Bson/Serialization/Serializers/DictionarySerializerBase.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)