@@ -22,13 +22,12 @@ namespace MongoDB.Bson.Serialization
2222 /// <summary>
2323 /// Default, global implementation of an <see cref="IBsonSerializerRegistry"/>.
2424 /// </summary>
25- public sealed class BsonSerializerRegistry : IBsonSerializerRegistryInternal
25+ public sealed class BsonSerializerRegistry : IBsonSerializerRegistry
2626 {
2727 // private fields
2828 private readonly ConcurrentDictionary < Type , IBsonSerializer > _cache ;
2929 private readonly ConcurrentStack < IBsonSerializationProvider > _serializationProviders ;
3030 private readonly Func < Type , IBsonSerializer > _createSerializer ;
31- private readonly IBsonSerializationDomain _serializationDomain ; //FP Need to investigate if we can remove this from here.
3231
3332 // constructors
3433 /// <summary>
@@ -48,15 +47,8 @@ internal BsonSerializerRegistry(IBsonSerializationDomain serializationDomain)
4847 _cache = new ConcurrentDictionary < Type , IBsonSerializer > ( ) ;
4948 _serializationProviders = new ConcurrentStack < IBsonSerializationProvider > ( ) ;
5049 _createSerializer = CreateSerializer ;
51- _serializationDomain = serializationDomain ;
5250 }
5351
54- // public methods
55- /// <summary>
56- /// //TODO
57- /// </summary>
58- IBsonSerializationDomain IBsonSerializerRegistryInternal . SerializationDomain => _serializationDomain ;
59-
6052 /// <summary>
6153 /// Gets the serializer for the specified <paramref name="type" />.
6254 /// If none is already registered, the serialization providers will be used to create a serializer and it will be automatically registered.
@@ -172,17 +164,14 @@ private IBsonSerializer CreateSerializer(Type type)
172164 {
173165 foreach ( var serializationProvider in _serializationProviders )
174166 {
175- IBsonSerializer serializer ;
176-
177- var registryAwareSerializationProvider = serializationProvider as IRegistryAwareBsonSerializationProvider ;
178- if ( registryAwareSerializationProvider != null )
179- {
180- serializer = registryAwareSerializationProvider . GetSerializer ( type , this ) ;
181- }
182- else
167+ var serializer = serializationProvider switch
183168 {
184- serializer = serializationProvider . GetSerializer ( type ) ;
185- }
169+ IDomainAwareBsonSerializationProvider domainAwareBsonSerializationProvider =>
170+ domainAwareBsonSerializationProvider . GetSerializerWithDomain ( type ) ,
171+ IRegistryAwareBsonSerializationProvider registryAwareSerializationProvider =>
172+ registryAwareSerializationProvider . GetSerializer ( type , this ) ,
173+ _ => serializationProvider . GetSerializer ( type )
174+ } ;
186175
187176 if ( serializer != null )
188177 {
0 commit comments