@@ -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