1414*/
1515
1616using System ;
17+ using System . Net ;
1718using MongoDB . Bson . IO ;
1819
1920namespace MongoDB . Bson . Serialization
@@ -33,6 +34,7 @@ public class BsonDeserializationContext
3334 // constructors
3435 private BsonDeserializationContext (
3536 IBsonReader reader ,
37+ IBsonSerializationDomain serializationDomain ,
3638 bool allowDuplicateElementNames ,
3739 IBsonSerializer dynamicArraySerializer ,
3840 IBsonSerializer dynamicDocumentSerializer )
@@ -42,12 +44,8 @@ private BsonDeserializationContext(
4244 _dynamicArraySerializer = dynamicArraySerializer ;
4345 _dynamicDocumentSerializer = dynamicDocumentSerializer ;
4446
45- if ( reader is IBsonReaderInternal readerInternal )
46- {
47- _serializationDomain = readerInternal . Settings ? . SerializationDomain ;
48- }
49-
50- _serializationDomain ??= BsonSerializer . DefaultSerializationDomain ;
47+ _serializationDomain = serializationDomain ; //FP Using this version to find error in an easier way for now
48+ //_serializationDomain = serializationDomain ?? BsonSerializer.DefaultSerializationDomain;
5149
5250 _dynamicArraySerializer ??= _serializationDomain . BsonDefaults . DynamicArraySerializer ;
5351 _dynamicDocumentSerializer ??= _serializationDomain . BsonDefaults . DynamicDocumentSerializer ;
@@ -103,20 +101,34 @@ public IBsonReader Reader
103101 get { return _reader ; }
104102 }
105103
106- // public static methods
107- /// <summary>
108- /// Creates a root context.
109- /// </summary>
110- /// <param name="reader">The reader.</param>
111- /// <param name="configurator">The configurator.</param>
112- /// <returns>
113- /// A root context.
114- /// </returns>
115- public static BsonDeserializationContext CreateRoot (
104+ // //DOMAIN-API We should remove this version of the CreateRoot method, and use the one that takes a serialization domain.
105+ // // public static methods
106+ // /// <summary>
107+ // /// Creates a root context.
108+ // /// </summary>
109+ // /// <param name="reader">The reader.</param>
110+ // /// <param name="configurator">The configurator.</param>
111+ // /// <returns>
112+ // /// A root context.
113+ // /// </returns>
114+ // public static BsonDeserializationContext CreateRoot(
115+ // IBsonReader reader,
116+ // Action<Builder> configurator = null)
117+ // {
118+ // var builder = new Builder(null, reader, BsonSerializer.DefaultSerializationDomain);
119+ // if (configurator != null)
120+ // {
121+ // configurator(builder);
122+ // }
123+ // return builder.Build();
124+ // }
125+
126+ internal static BsonDeserializationContext CreateRoot (
116127 IBsonReader reader ,
128+ IBsonSerializationDomain serializationDomain ,
117129 Action < Builder > configurator = null )
118130 {
119- var builder = new Builder ( null , reader ) ;
131+ var builder = new Builder ( null , reader , serializationDomain ) ;
120132 if ( configurator != null )
121133 {
122134 configurator ( builder ) ;
@@ -135,7 +147,7 @@ public static BsonDeserializationContext CreateRoot(
135147 public BsonDeserializationContext With (
136148 Action < Builder > configurator = null )
137149 {
138- var builder = new Builder ( this , _reader ) ;
150+ var builder = new Builder ( this , _reader , _serializationDomain ) ;
139151 if ( configurator != null )
140152 {
141153 configurator ( builder ) ;
@@ -154,16 +166,18 @@ public class Builder
154166 private IBsonSerializer _dynamicArraySerializer ;
155167 private IBsonSerializer _dynamicDocumentSerializer ;
156168 private IBsonReader _reader ;
169+ internal IBsonSerializationDomain _serializationDomain ;
157170
158171 // constructors
159- internal Builder ( BsonDeserializationContext other , IBsonReader reader )
172+ internal Builder ( BsonDeserializationContext other , IBsonReader reader , IBsonSerializationDomain serializationDomain )
160173 {
161174 if ( reader == null )
162175 {
163176 throw new ArgumentNullException ( "reader" ) ;
164177 }
165178
166179 _reader = reader ;
180+ _serializationDomain = serializationDomain ;
167181 if ( other != null )
168182 {
169183 _allowDuplicateElementNames = other . AllowDuplicateElementNames ;
@@ -224,14 +238,16 @@ public IBsonReader Reader
224238 get { return _reader ; }
225239 }
226240
241+ internal IBsonSerializationDomain SerializationDomain => _serializationDomain ;
242+
227243 // public methods
228244 /// <summary>
229245 /// Builds the BsonDeserializationContext instance.
230246 /// </summary>
231247 /// <returns>A BsonDeserializationContext.</returns>
232248 internal BsonDeserializationContext Build ( )
233249 {
234- return new BsonDeserializationContext ( _reader , _allowDuplicateElementNames , _dynamicArraySerializer , _dynamicDocumentSerializer ) ;
250+ return new BsonDeserializationContext ( _reader , _serializationDomain , _allowDuplicateElementNames , _dynamicArraySerializer , _dynamicDocumentSerializer ) ;
235251 }
236252 }
237253 }
0 commit comments