Skip to content

Commit fe78c71

Browse files
committed
Other improvements
1 parent 3a2b361 commit fe78c71

File tree

6 files changed

+22
-10
lines changed

6 files changed

+22
-10
lines changed

src/MongoDB.Bson/IO/BsonReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace MongoDB.Bson.IO
2525
/// <summary>
2626
/// Represents a BSON reader for some external format (see subclasses).
2727
/// </summary>
28-
public abstract class BsonReader : IBsonReader
28+
public abstract class BsonReader : IBsonReaderInternal
2929
{
3030
// private fields
3131
private bool _disposed = false;

src/MongoDB.Bson/InternalExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
namespace MongoDB.Bson
2222
{
23+
//TODO This could be moved somewhere else
2324
internal static class InternalExtensions
2425
{
2526
public static Type GetActualTypeInternal(this IDiscriminatorConvention discriminatorConvention, IBsonReader bsonReader, Type nominalType, IBsonSerializationDomain serializationDomain)

src/MongoDB.Bson/Serialization/BsonClassMapSerializationProvider.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,18 @@ public override IBsonSerializer GetSerializer(Type type, IBsonSerializerRegistry
4141
!typeof(Array).GetTypeInfo().IsAssignableFrom(type) &&
4242
!typeof(Enum).GetTypeInfo().IsAssignableFrom(type))
4343
{
44-
var classMap = serializerRegistry.SerializationDomain.BsonClassMap.LookupClassMap(type);
44+
IBsonSerializationDomain domain;
45+
46+
if (serializerRegistry is IBsonSerializerRegistryInternal serializerRegistryInternal)
47+
{
48+
domain = serializerRegistryInternal.SerializationDomain;
49+
}
50+
else
51+
{
52+
domain = BsonSerializer.DefaultSerializationDomain;
53+
}
54+
55+
var classMap = domain.BsonClassMap.LookupClassMap(type);
4556
var classMapSerializerDefinition = typeof(BsonClassMapSerializer<>);
4657
var classMapSerializerType = classMapSerializerDefinition.MakeGenericType(type);
4758
return (IBsonSerializer)Activator.CreateInstance(classMapSerializerType, classMap);

src/MongoDB.Bson/Serialization/BsonSerializationProviderBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public abstract class BsonSerializationProviderBase : IRegistryAwareBsonSerializ
2626
/// <inheritdoc/>
2727
public virtual IBsonSerializer GetSerializer(Type type)
2828
{
29-
return GetSerializer(type, BsonSerializer.SerializerRegistry); //TODO We can keep this as is? I think in the long run we should remove this overload.
29+
return GetSerializer(type, BsonSerializer.DefaultSerializationDomain.SerializerRegistry); //TODO We can keep this as is? I think in the long run we should remove this overload.
3030
}
3131

3232
/// <inheritdoc/>
@@ -40,7 +40,7 @@ public virtual IBsonSerializer GetSerializer(Type type)
4040
/// <returns>A serializer.</returns>
4141
protected virtual IBsonSerializer CreateGenericSerializer(Type serializerTypeDefinition, params Type[] typeArguments)
4242
{
43-
return CreateGenericSerializer(serializerTypeDefinition, typeArguments, BsonSerializer.SerializerRegistry); //TODO We can keep this as is? I think in the long run we should remove this overload.
43+
return CreateGenericSerializer(serializerTypeDefinition, typeArguments, BsonSerializer.DefaultSerializationDomain.SerializerRegistry); //TODO We can keep this as is? I think in the long run we should remove this overload.
4444
}
4545

4646
/// <summary>

src/MongoDB.Bson/Serialization/BsonSerializerRegistry.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace MongoDB.Bson.Serialization
2222
/// <summary>
2323
/// Default, global implementation of an <see cref="IBsonSerializerRegistry"/>.
2424
/// </summary>
25-
public sealed class BsonSerializerRegistry : IBsonSerializerRegistry
25+
public sealed class BsonSerializerRegistry : IBsonSerializerRegistryInternal
2626
{
2727
// private fields
2828
private readonly ConcurrentDictionary<Type, IBsonSerializer> _cache;

src/MongoDB.Bson/Serialization/IBsonSerializerRegistry.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ namespace MongoDB.Bson.Serialization
2222
/// </summary>
2323
public interface IBsonSerializerRegistry
2424
{
25-
/// <summary>
26-
/// //TODO
27-
/// </summary>
28-
public IBsonSerializationDomain SerializationDomain { get; }
29-
3025
/// <summary>
3126
/// Gets the serializer for the specified <paramref name="type"/>.
3227
/// </summary>
@@ -41,4 +36,9 @@ public interface IBsonSerializerRegistry
4136
/// <returns>The serializer.</returns>
4237
IBsonSerializer<T> GetSerializer<T>();
4338
}
39+
40+
internal interface IBsonSerializerRegistryInternal : IBsonSerializerRegistry
41+
{
42+
IBsonSerializationDomain SerializationDomain { get; }
43+
}
4444
}

0 commit comments

Comments
 (0)