Skip to content

Commit 19aa4dc

Browse files
authored
CSHARP-5442: Fixed use of serializer by Atlas Search operators (mongodb#1583)
1 parent 97f2667 commit 19aa4dc

File tree

7 files changed

+555
-218
lines changed

7 files changed

+555
-218
lines changed

src/MongoDB.Driver/FieldValueSerializerHelper.cs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -141,18 +141,6 @@ public static IBsonSerializer GetSerializerForValueType(IBsonSerializer fieldSer
141141
return ConvertIfPossibleSerializer.Create(valueType, fieldType, fieldSerializer, serializerRegistry);
142142
}
143143

144-
public static IBsonSerializer GetSerializerForValueType(IBsonSerializer fieldSerializer, IBsonSerializerRegistry serializerRegistry, Type valueType, object value)
145-
{
146-
if (!valueType.GetTypeInfo().IsValueType && value == null)
147-
{
148-
return fieldSerializer;
149-
}
150-
else
151-
{
152-
return GetSerializerForValueType(fieldSerializer, serializerRegistry, valueType, allowScalarValueForArrayField: false);
153-
}
154-
}
155-
156144
// private static methods
157145
private static bool HasStringRepresentation(IBsonSerializer serializer)
158146
{
@@ -313,7 +301,7 @@ public override void Serialize(BsonSerializationContext context, BsonSerializati
313301
}
314302
}
315303

316-
internal class IEnumerableSerializer<TItem> : SerializerBase<IEnumerable<TItem>>
304+
internal class IEnumerableSerializer<TItem> : SerializerBase<IEnumerable<TItem>>, IBsonArraySerializer
317305
{
318306
private readonly IBsonSerializer<TItem> _itemSerializer;
319307

@@ -351,6 +339,12 @@ public override void Serialize(BsonSerializationContext context, BsonSerializati
351339
bsonWriter.WriteEndArray();
352340
}
353341
}
342+
343+
public bool TryGetItemSerializationInfo(out BsonSerializationInfo serializationInfo)
344+
{
345+
serializationInfo = new BsonSerializationInfo(null, _itemSerializer, typeof(TItem));
346+
return true;
347+
}
354348
}
355349

356350
internal class NullableEnumConvertingSerializer<TFrom, TTo> : SerializerBase<Nullable<TFrom>> where TFrom : struct where TTo : struct

src/MongoDB.Driver/IAggregateFluent.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,6 @@ IAggregateFluent<TNewResult> Lookup<TForeignDocument, TAsElement, TAs, TNewResul
404404
IAggregateFluent<BsonDocument> SetWindowFields<TWindowFields>(
405405
AggregateExpressionDefinition<ISetWindowFieldsPartition<TResult>, TWindowFields> output);
406406

407-
//TODO If I add a parameter here, then this would be a binary breaking change
408407
/// <summary>
409408
/// Appends a $search stage to the pipeline.
410409
/// </summary>

0 commit comments

Comments
 (0)