@@ -25,6 +25,8 @@ namespace MongoDB.Bson
25
25
/// </summary>
26
26
public static class BsonExtensionMethods
27
27
{
28
+ //DOMAIN-API We should remove this and use the version with the domain.
29
+ //QUESTION: Do we want to do something now about this...? It's used also internally, but it seems in most cases it's used for "default serialization", so it should be ok.
28
30
/// <summary>
29
31
/// Serializes an object to a BSON byte array.
30
32
/// </summary>
@@ -49,6 +51,21 @@ public static byte[] ToBson<TNominalType>(
49
51
return ToBson ( obj , typeof ( TNominalType ) , writerSettings , serializer , configurator , args , estimatedBsonSize ) ;
50
52
}
51
53
54
+ internal static byte [ ] ToBson < TNominalType > (
55
+ this TNominalType obj ,
56
+ IBsonSerializationDomain serializationDomain ,
57
+ IBsonSerializer < TNominalType > serializer = null ,
58
+ BsonBinaryWriterSettings writerSettings = null ,
59
+ Action < BsonSerializationContext . Builder > configurator = null ,
60
+ BsonSerializationArgs args = default ( BsonSerializationArgs ) ,
61
+ int estimatedBsonSize = 0 )
62
+ {
63
+ args . SetOrValidateNominalType ( typeof ( TNominalType ) , "<TNominalType>" ) ;
64
+
65
+ return ToBson ( obj , typeof ( TNominalType ) , serializationDomain , writerSettings , serializer , configurator , args , estimatedBsonSize ) ;
66
+ }
67
+
68
+ //DOMAIN-API We should remove this and use the version with the domain.
52
69
/// <summary>
53
70
/// Serializes an object to a BSON byte array.
54
71
/// </summary>
@@ -68,6 +85,17 @@ public static byte[] ToBson(
68
85
BsonBinaryWriterSettings writerSettings = null ,
69
86
IBsonSerializer serializer = null ,
70
87
Action < BsonSerializationContext . Builder > configurator = null ,
88
+ BsonSerializationArgs args = default ,
89
+ int estimatedBsonSize = 0 ) => ToBson ( obj , nominalType , BsonSerializer . DefaultSerializationDomain , writerSettings ,
90
+ serializer , configurator , args , estimatedBsonSize ) ;
91
+
92
+ internal static byte [ ] ToBson (
93
+ this object obj ,
94
+ Type nominalType ,
95
+ IBsonSerializationDomain serializationDomain ,
96
+ BsonBinaryWriterSettings writerSettings = null ,
97
+ IBsonSerializer serializer = null ,
98
+ Action < BsonSerializationContext . Builder > configurator = null ,
71
99
BsonSerializationArgs args = default ( BsonSerializationArgs ) ,
72
100
int estimatedBsonSize = 0 )
73
101
{
@@ -84,7 +112,7 @@ public static byte[] ToBson(
84
112
85
113
if ( serializer == null )
86
114
{
87
- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
115
+ serializer = serializationDomain . LookupSerializer ( nominalType ) ;
88
116
}
89
117
if ( serializer . ValueType != nominalType )
90
118
{
@@ -96,7 +124,7 @@ public static byte[] ToBson(
96
124
{
97
125
using ( var bsonWriter = new BsonBinaryWriter ( memoryStream , writerSettings ?? BsonBinaryWriterSettings . Defaults ) )
98
126
{
99
- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
127
+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , serializationDomain , configurator ) ;
100
128
serializer . Serialize ( context , args , obj ) ;
101
129
}
102
130
return memoryStream . ToArray ( ) ;
@@ -138,7 +166,16 @@ public static BsonDocument ToBsonDocument(
138
166
Type nominalType ,
139
167
IBsonSerializer serializer = null ,
140
168
Action < BsonSerializationContext . Builder > configurator = null ,
141
- BsonSerializationArgs args = default ( BsonSerializationArgs ) )
169
+ BsonSerializationArgs args = default ) => ToBsonDocument ( obj , nominalType ,
170
+ BsonSerializer . DefaultSerializationDomain , serializer , configurator , args ) ;
171
+
172
+ internal static BsonDocument ToBsonDocument (
173
+ this object obj ,
174
+ Type nominalType ,
175
+ IBsonSerializationDomain serializationDomain ,
176
+ IBsonSerializer serializer = null ,
177
+ Action < BsonSerializationContext . Builder > configurator = null ,
178
+ BsonSerializationArgs args = default )
142
179
{
143
180
if ( nominalType == null )
144
181
{
@@ -165,7 +202,7 @@ public static BsonDocument ToBsonDocument(
165
202
return convertibleToBsonDocument . ToBsonDocument ( ) ; // use the provided ToBsonDocument method
166
203
}
167
204
168
- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
205
+ serializer = serializationDomain . LookupSerializer ( nominalType ) ;
169
206
}
170
207
if ( serializer . ValueType != nominalType )
171
208
{
@@ -177,7 +214,7 @@ public static BsonDocument ToBsonDocument(
177
214
var document = new BsonDocument ( ) ;
178
215
using ( var bsonWriter = new BsonDocumentWriter ( document ) )
179
216
{
180
- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
217
+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , serializationDomain , configurator ) ;
181
218
serializer . Serialize ( context , args , obj ) ;
182
219
}
183
220
return document ;
@@ -226,6 +263,16 @@ public static string ToJson(
226
263
JsonWriterSettings writerSettings = null ,
227
264
IBsonSerializer serializer = null ,
228
265
Action < BsonSerializationContext . Builder > configurator = null ,
266
+ BsonSerializationArgs args = default )
267
+ => ToJson ( obj , nominalType , BsonSerializer . DefaultSerializationDomain , writerSettings , serializer , configurator , args ) ;
268
+
269
+ internal static string ToJson (
270
+ this object obj ,
271
+ Type nominalType ,
272
+ IBsonSerializationDomain domain ,
273
+ JsonWriterSettings writerSettings = null ,
274
+ IBsonSerializer serializer = null ,
275
+ Action < BsonSerializationContext . Builder > configurator = null ,
229
276
BsonSerializationArgs args = default ( BsonSerializationArgs ) )
230
277
{
231
278
if ( nominalType == null )
@@ -236,7 +283,7 @@ public static string ToJson(
236
283
237
284
if ( serializer == null )
238
285
{
239
- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
286
+ serializer = domain . LookupSerializer ( nominalType ) ;
240
287
}
241
288
if ( serializer . ValueType != nominalType )
242
289
{
@@ -248,7 +295,7 @@ public static string ToJson(
248
295
{
249
296
using ( var bsonWriter = new JsonWriter ( stringWriter , writerSettings ?? JsonWriterSettings . Defaults ) )
250
297
{
251
- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
298
+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , domain , configurator ) ;
252
299
serializer . Serialize ( context , args , obj ) ;
253
300
}
254
301
return stringWriter . ToString ( ) ;
0 commit comments