@@ -25,6 +25,8 @@ namespace MongoDB.Bson
2525 /// </summary>
2626 public static class BsonExtensionMethods
2727 {
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.
2830 /// <summary>
2931 /// Serializes an object to a BSON byte array.
3032 /// </summary>
@@ -49,6 +51,21 @@ public static byte[] ToBson<TNominalType>(
4951 return ToBson ( obj , typeof ( TNominalType ) , writerSettings , serializer , configurator , args , estimatedBsonSize ) ;
5052 }
5153
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.
5269 /// <summary>
5370 /// Serializes an object to a BSON byte array.
5471 /// </summary>
@@ -68,6 +85,17 @@ public static byte[] ToBson(
6885 BsonBinaryWriterSettings writerSettings = null ,
6986 IBsonSerializer serializer = null ,
7087 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 ,
7199 BsonSerializationArgs args = default ( BsonSerializationArgs ) ,
72100 int estimatedBsonSize = 0 )
73101 {
@@ -84,7 +112,7 @@ public static byte[] ToBson(
84112
85113 if ( serializer == null )
86114 {
87- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
115+ serializer = serializationDomain . LookupSerializer ( nominalType ) ;
88116 }
89117 if ( serializer . ValueType != nominalType )
90118 {
@@ -96,7 +124,7 @@ public static byte[] ToBson(
96124 {
97125 using ( var bsonWriter = new BsonBinaryWriter ( memoryStream , writerSettings ?? BsonBinaryWriterSettings . Defaults ) )
98126 {
99- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
127+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , serializationDomain , configurator ) ;
100128 serializer . Serialize ( context , args , obj ) ;
101129 }
102130 return memoryStream . ToArray ( ) ;
@@ -138,7 +166,16 @@ public static BsonDocument ToBsonDocument(
138166 Type nominalType ,
139167 IBsonSerializer serializer = null ,
140168 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 )
142179 {
143180 if ( nominalType == null )
144181 {
@@ -165,7 +202,7 @@ public static BsonDocument ToBsonDocument(
165202 return convertibleToBsonDocument . ToBsonDocument ( ) ; // use the provided ToBsonDocument method
166203 }
167204
168- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
205+ serializer = serializationDomain . LookupSerializer ( nominalType ) ;
169206 }
170207 if ( serializer . ValueType != nominalType )
171208 {
@@ -177,7 +214,7 @@ public static BsonDocument ToBsonDocument(
177214 var document = new BsonDocument ( ) ;
178215 using ( var bsonWriter = new BsonDocumentWriter ( document ) )
179216 {
180- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
217+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , serializationDomain , configurator ) ;
181218 serializer . Serialize ( context , args , obj ) ;
182219 }
183220 return document ;
@@ -226,6 +263,16 @@ public static string ToJson(
226263 JsonWriterSettings writerSettings = null ,
227264 IBsonSerializer serializer = null ,
228265 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 ,
229276 BsonSerializationArgs args = default ( BsonSerializationArgs ) )
230277 {
231278 if ( nominalType == null )
@@ -236,7 +283,7 @@ public static string ToJson(
236283
237284 if ( serializer == null )
238285 {
239- serializer = BsonSerializer . LookupSerializer ( nominalType ) ;
286+ serializer = domain . LookupSerializer ( nominalType ) ;
240287 }
241288 if ( serializer . ValueType != nominalType )
242289 {
@@ -248,7 +295,7 @@ public static string ToJson(
248295 {
249296 using ( var bsonWriter = new JsonWriter ( stringWriter , writerSettings ?? JsonWriterSettings . Defaults ) )
250297 {
251- var context = BsonSerializationContext . CreateRoot ( bsonWriter , configurator ) ;
298+ var context = BsonSerializationContext . CreateRoot ( bsonWriter , domain , configurator ) ;
252299 serializer . Serialize ( context , args , obj ) ;
253300 }
254301 return stringWriter . ToString ( ) ;
0 commit comments