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()
48
48
/// Initializes a new instance of the <see cref="DiscriminatedInterfaceSerializer{TInterface}" /> class.
49
49
/// </summary>
50
50
public DiscriminatedInterfaceSerializer ( )
51
- : this ( BsonSerializer . LookupDiscriminatorConvention ( typeof ( TInterface ) ) )
51
+ : this ( discriminatorConvention : null )
52
52
{
53
53
}
54
54
@@ -80,8 +80,20 @@ public DiscriminatedInterfaceSerializer(IDiscriminatorConvention discriminatorCo
80
80
}
81
81
82
82
_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
+
85
97
_interfaceSerializer = interfaceSerializer ;
86
98
}
87
99
You can’t perform that action at this time.
0 commit comments