Skip to content

Commit d7756c6

Browse files
committed
Removed multiple interfaces plus more fixes
1 parent bb395b0 commit d7756c6

File tree

9 files changed

+196
-167
lines changed

9 files changed

+196
-167
lines changed

src/MongoDB.Bson/Serialization/BsonSerializationDomain.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,6 @@ public ReaderWriterLockSlim ConfigLock
8585
get { return __configLock; }
8686
}
8787

88-
public IBsonCoreSerializerConfiguration SerializationConfiguration => this;
89-
90-
// public methods
91-
92-
public IBsonCoreSerializer BuildCoreSerializer()
93-
{
94-
return this;
95-
}
96-
9788
/// <summary>
9889
/// Deserializes an object from a BsonDocument.
9990
/// </summary>

src/MongoDB.Bson/Serialization/Conventions/HierarchicalDiscriminatorConvention.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ public HierarchicalDiscriminatorConvention(string elementName)
4141
/// <param name="nominalType">The nominal type.</param>
4242
/// <param name="actualType">The actual type.</param>
4343
/// <returns>The discriminator value.</returns>
44-
public override BsonValue GetDiscriminator(Type nominalType, Type actualType)
44+
public override BsonValue GetDiscriminator(Type nominalType, Type actualType) =>
45+
GetDiscriminator(nominalType, actualType, BsonSerializer.DefaultDomain);
46+
47+
/// <inheritdoc />
48+
public override BsonValue GetDiscriminator(Type nominalType, Type actualType, IBsonSerializationDomain domain)
4549
{
4650
// TODO: this isn't quite right, not all classes are serialized using a class map serializer
4751
var classMap = BsonClassMap.LookupClassMap(actualType);

src/MongoDB.Bson/Serialization/Conventions/IDiscriminatorConvention.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,31 @@ public interface IDiscriminatorConvention
3636
/// <returns>The actual type.</returns>
3737
Type GetActualType(IBsonReader bsonReader, Type nominalType);
3838

39+
/// <summary>
40+
/// //TODO
41+
/// </summary>
42+
/// <param name="bsonReader"></param>
43+
/// <param name="nominalType"></param>
44+
/// <param name="domain"></param>
45+
/// <returns></returns>
46+
Type GetActualType(IBsonReader bsonReader, Type nominalType, IBsonSerializationDomain domain);
47+
3948
/// <summary>
4049
/// Gets the discriminator value for an actual type.
4150
/// </summary>
4251
/// <param name="nominalType">The nominal type.</param>
4352
/// <param name="actualType">The actual type.</param>
4453
/// <returns>The discriminator value.</returns>
4554
BsonValue GetDiscriminator(Type nominalType, Type actualType);
55+
56+
/// <summary>
57+
/// //TODO
58+
/// </summary>
59+
/// <param name="nominalType"></param>
60+
/// <param name="actualType"></param>
61+
/// <param name="domain"></param>
62+
/// <returns></returns>
63+
BsonValue GetDiscriminator(Type nominalType, Type actualType, IBsonSerializationDomain domain);
64+
4665
}
4766
}

src/MongoDB.Bson/Serialization/Conventions/ObjectDiscriminatorConvention.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ public Type GetActualType(IBsonReader bsonReader, Type nominalType)
144144
return nominalType;
145145
}
146146

147+
/// <inheritdoc />
148+
public Type GetActualType(IBsonReader bsonReader, Type nominalType, IBsonSerializationDomain domain)
149+
{
150+
throw new NotImplementedException();
151+
}
152+
147153
/// <summary>
148154
/// Gets the discriminator value for an actual type.
149155
/// </summary>
@@ -155,6 +161,12 @@ public BsonValue GetDiscriminator(Type nominalType, Type actualType)
155161
return TypeNameDiscriminator.GetDiscriminator(actualType);
156162
}
157163

164+
/// <inheritdoc />
165+
public BsonValue GetDiscriminator(Type nominalType, Type actualType, IBsonSerializationDomain domain)
166+
{
167+
throw new NotImplementedException();
168+
}
169+
158170
/// <inheritdoc/>
159171
public override int GetHashCode() => 0;
160172
}

src/MongoDB.Bson/Serialization/Conventions/ScalarDiscriminatorConvention.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public ScalarDiscriminatorConvention(string elementName)
3939
/// <param name="nominalType">The nominal type.</param>
4040
/// <param name="actualType">The actual type.</param>
4141
/// <returns>The discriminator value.</returns>
42-
public override BsonValue GetDiscriminator(Type nominalType, Type actualType)
42+
public override BsonValue GetDiscriminator(Type nominalType, Type actualType) =>
43+
GetDiscriminator(nominalType, actualType, BsonSerializer.DefaultDomain);
44+
45+
/// <inheritdoc />
46+
public override BsonValue GetDiscriminator(Type nominalType, Type actualType, IBsonSerializationDomain domain)
4347
{
4448
// TODO: this isn't quite right, not all classes are serialized using a class map serializer
4549
var classMap = BsonClassMap.LookupClassMap(actualType);

src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,21 @@ obj is StandardDiscriminatorConvention other &&
9494
/// <param name="bsonReader">The reader.</param>
9595
/// <param name="nominalType">The nominal type.</param>
9696
/// <returns>The actual type.</returns>
97-
public Type GetActualType(IBsonReader bsonReader, Type nominalType)
97+
public Type GetActualType(IBsonReader bsonReader, Type nominalType) =>
98+
GetActualType(bsonReader, nominalType, BsonSerializer.DefaultDomain);
99+
100+
/// <inheritdoc />
101+
public Type GetActualType(IBsonReader bsonReader, Type nominalType, IBsonSerializationDomain domain)
98102
{
99103
// the BsonReader is sitting at the value whose actual type needs to be found
100104
var bsonType = bsonReader.GetCurrentBsonType();
101105
if (bsonType == BsonType.Document)
102106
{
103107
// ensure KnownTypes of nominalType are registered (so IsTypeDiscriminated returns correct answer)
104-
BsonSerializer.EnsureKnownTypesAreRegistered(nominalType); //TODO ??
108+
domain.EnsureKnownTypesAreRegistered(nominalType); //TODO ??
105109

106110
// we can skip looking for a discriminator if nominalType has no discriminated sub types
107-
if (BsonSerializer.IsTypeDiscriminated(nominalType)) //TODO ??
111+
if (domain.IsTypeDiscriminated(nominalType)) //TODO ??
108112
{
109113
var bookmark = bsonReader.GetBookmark();
110114
bsonReader.ReadStartDocument();
@@ -135,6 +139,9 @@ public Type GetActualType(IBsonReader bsonReader, Type nominalType)
135139
/// <returns>The discriminator value.</returns>
136140
public abstract BsonValue GetDiscriminator(Type nominalType, Type actualType);
137141

142+
/// <inheritdoc/>
143+
public abstract BsonValue GetDiscriminator(Type nominalType, Type actualType, IBsonSerializationDomain domain);
144+
138145
/// <inheritdoc/>
139146
public override int GetHashCode() => 0;
140147
}

0 commit comments

Comments
 (0)