From 97f26678270275299221c6d530f09bc6f7e0350d Mon Sep 17 00:00:00 2001
From: LucStr <25279790+LucStr@users.noreply.github.com>
Date: Thu, 18 Jan 2024 19:52:31 +0100
Subject: [PATCH] CSHARP-4935: Support casting from an interface to a type that
implements that interface in LINQ queries.
---
.../DiscriminatedInterfaceSerializer.cs | 36 +++++++---
...essionToAggregationExpressionTranslator.cs | 2 +-
...onvertExpressionToFilterFieldTranslator.cs | 2 +-
...nToAggregationExpressionTranslatorTests.cs | 66 ++++++++++++++++++-
...onvertExpressionToFilterTranslatorTests.cs | 33 +++++++++-
5 files changed, 126 insertions(+), 13 deletions(-)
diff --git a/src/MongoDB.Bson/Serialization/Serializers/DiscriminatedInterfaceSerializer.cs b/src/MongoDB.Bson/Serialization/Serializers/DiscriminatedInterfaceSerializer.cs
index ca2fef6fe07..eb0035489e0 100644
--- a/src/MongoDB.Bson/Serialization/Serializers/DiscriminatedInterfaceSerializer.cs
+++ b/src/MongoDB.Bson/Serialization/Serializers/DiscriminatedInterfaceSerializer.cs
@@ -75,7 +75,7 @@ public DiscriminatedInterfaceSerializer()
/// interfaceType
/// interfaceType
public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorConvention)
- : this(discriminatorConvention, CreateInterfaceSerializer())
+ : this(discriminatorConvention, CreateInterfaceSerializer(), objectSerializer: null)
{
}
@@ -87,6 +87,19 @@ public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorCo
/// interfaceType
/// interfaceType
public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorConvention, IBsonSerializer interfaceSerializer)
+ : this(discriminatorConvention, interfaceSerializer, objectSerializer: null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The discriminator convention.
+ /// The interface serializer (necessary to support LINQ queries).
+ /// The serializer that is used to serialize any objects.
+ /// interfaceType
+ /// interfaceType
+ public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorConvention, IBsonSerializer interfaceSerializer, IBsonSerializer