File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed
src/MongoDB.Bson/Serialization/Serializers Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -48,7 +48,7 @@ private static IBsonSerializer<TInterface> CreateInterfaceSerializer()
4848 /// Initializes a new instance of the <see cref="DiscriminatedInterfaceSerializer{TInterface}" /> class.
4949 /// </summary>
5050 public DiscriminatedInterfaceSerializer ( )
51- : this ( BsonSerializer . LookupDiscriminatorConvention ( typeof ( TInterface ) ) )
51+ : this ( discriminatorConvention : null )
5252 {
5353 }
5454
@@ -80,8 +80,20 @@ public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorCo
8080 }
8181
8282 _interfaceType = typeof ( TInterface ) ;
83- _discriminatorConvention = discriminatorConvention ;
84- _objectSerializer = ( ( ObjectSerializer ) BsonSerializer . LookupSerializer < object > ( ) ) . WithDiscriminatorConvention ( _discriminatorConvention ) ;
83+ _discriminatorConvention = discriminatorConvention ?? BsonSerializer . LookupDiscriminatorConvention ( typeof ( TInterface ) ) ;
84+ _objectSerializer = BsonSerializer . LookupSerializer < object > ( ) ;
85+ if ( _objectSerializer is ObjectSerializer standardObjectSerializer )
86+ {
87+ _objectSerializer = standardObjectSerializer . WithDiscriminatorConvention ( _discriminatorConvention ) ;
88+ }
89+ else
90+ {
91+ if ( discriminatorConvention != null )
92+ {
93+ throw new BsonSerializationException ( "Can't set discriminator convention on custom object serializer." ) ;
94+ }
95+ }
96+
8597 _interfaceSerializer = interfaceSerializer ;
8698 }
8799
You can’t perform that action at this time.
0 commit comments