@@ -54,13 +54,15 @@ public abstract class MongoCursor : IEnumerable
54
54
/// <param name="query">The query.</param>
55
55
/// <param name="readPreference">The read preference.</param>
56
56
/// <param name="serializer">The serializer.</param>
57
- protected MongoCursor ( MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer )
57
+ /// <param name="serializationOptions">The serialization options.</param>
58
+ protected MongoCursor ( MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer , IBsonSerializationOptions serializationOptions )
58
59
{
59
60
_collection = collection ;
60
61
_database = collection . Database ;
61
62
_server = collection . Database . Server ;
62
63
_query = query ;
63
64
_serializer = serializer ;
65
+ _serializationOptions = serializationOptions ;
64
66
_readPreference = readPreference ;
65
67
}
66
68
@@ -254,13 +256,16 @@ public virtual bool IsFrozen
254
256
/// <param name="query">A query.</param>
255
257
/// <param name="readPreference">The read preference.</param>
256
258
/// <param name="serializer">The serializer.</param>
257
- /// <returns>A cursor.</returns>
258
- public static MongoCursor Create ( Type documentType , MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer )
259
+ /// <param name="serializationOptions">The serialization options.</param>
260
+ /// <returns>
261
+ /// A cursor.
262
+ /// </returns>
263
+ public static MongoCursor Create ( Type documentType , MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer , IBsonSerializationOptions serializationOptions )
259
264
{
260
265
var cursorDefinition = typeof ( MongoCursor < > ) ;
261
266
var cursorType = cursorDefinition . MakeGenericType ( documentType ) ;
262
- var constructorInfo = cursorType . GetConstructor ( new Type [ ] { typeof ( MongoCollection ) , typeof ( IMongoQuery ) , typeof ( ReadPreference ) , typeof ( IBsonSerializer ) } ) ;
263
- return ( MongoCursor ) constructorInfo . Invoke ( new object [ ] { collection , query , readPreference , serializer } ) ;
267
+ var constructorInfo = cursorType . GetConstructor ( new Type [ ] { typeof ( MongoCollection ) , typeof ( IMongoQuery ) , typeof ( ReadPreference ) , typeof ( IBsonSerializer ) , typeof ( IBsonSerializationOptions ) } ) ;
268
+ return ( MongoCursor ) constructorInfo . Invoke ( new object [ ] { collection , query , readPreference , serializer , serializationOptions } ) ;
264
269
}
265
270
266
271
// public methods
@@ -279,10 +284,13 @@ public virtual MongoCursor<TDocument> Clone<TDocument>()
279
284
/// </summary>
280
285
/// <typeparam name="TDocument">The type of the documents returned.</typeparam>
281
286
/// <param name="serializer">The serializer to use.</param>
282
- /// <returns>A clone of the cursor.</returns>
283
- public virtual MongoCursor < TDocument > Clone < TDocument > ( IBsonSerializer serializer )
287
+ /// <param name="serializationOptions">The serialization options.</param>
288
+ /// <returns>
289
+ /// A clone of the cursor.
290
+ /// </returns>
291
+ public virtual MongoCursor < TDocument > Clone < TDocument > ( IBsonSerializer serializer , IBsonSerializationOptions serializationOptions )
284
292
{
285
- return ( MongoCursor < TDocument > ) Clone ( typeof ( TDocument ) , serializer ) ;
293
+ return ( MongoCursor < TDocument > ) Clone ( typeof ( TDocument ) , serializer , serializationOptions ) ;
286
294
}
287
295
288
296
/// <summary>
@@ -292,18 +300,22 @@ public virtual MongoCursor<TDocument> Clone<TDocument>(IBsonSerializer serialize
292
300
/// <returns>A clone of the cursor.</returns>
293
301
public virtual MongoCursor Clone ( Type documentType )
294
302
{
295
- return Clone ( documentType , _serializer ) ;
303
+ var serializer = BsonSerializer . LookupSerializer ( documentType ) ;
304
+ return Clone ( documentType , serializer , null ) ;
296
305
}
297
306
298
307
/// <summary>
299
308
/// Creates a clone of the cursor.
300
309
/// </summary>
301
310
/// <param name="documentType">The type of the documents returned.</param>
302
311
/// <param name="serializer">The serializer to use.</param>
303
- /// <returns>A clone of the cursor.</returns>
304
- public virtual MongoCursor Clone ( Type documentType , IBsonSerializer serializer )
312
+ /// <param name="serializationOptions">The serialization options.</param>
313
+ /// <returns>
314
+ /// A clone of the cursor.
315
+ /// </returns>
316
+ public virtual MongoCursor Clone ( Type documentType , IBsonSerializer serializer , IBsonSerializationOptions serializationOptions )
305
317
{
306
- var clone = Create ( documentType , _collection , _query , _readPreference , serializer ) ;
318
+ var clone = Create ( documentType , _collection , _query , _readPreference , serializer , serializationOptions ) ;
307
319
clone . _options = _options == null ? null : ( BsonDocument ) _options . Clone ( ) ;
308
320
clone . _flags = _flags ;
309
321
clone . _skip = _skip ;
@@ -347,7 +359,7 @@ public virtual BsonDocument Explain()
347
359
public virtual BsonDocument Explain ( bool verbose )
348
360
{
349
361
_isFrozen = true ;
350
- var clone = Clone < BsonDocument > ( BsonDocumentSerializer . Instance ) ;
362
+ var clone = Clone < BsonDocument > ( BsonDocumentSerializer . Instance , null ) ;
351
363
clone . SetOption ( "$explain" , true ) ;
352
364
clone . _limit = - clone . _limit ; // TODO: should this be -1?
353
365
var explanation = clone . FirstOrDefault ( ) ;
@@ -683,8 +695,9 @@ public class MongoCursor<TDocument> : MongoCursor, IEnumerable<TDocument>
683
695
/// <param name="query">The query.</param>
684
696
/// <param name="readPreference">The read preference.</param>
685
697
/// <param name="serializer">The serializer.</param>
686
- public MongoCursor ( MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer )
687
- : base ( collection , query , readPreference , serializer )
698
+ /// <param name="serializationOptions">The serialization options.</param>
699
+ public MongoCursor ( MongoCollection collection , IMongoQuery query , ReadPreference readPreference , IBsonSerializer serializer , IBsonSerializationOptions serializationOptions )
700
+ : base ( collection , query , readPreference , serializer , serializationOptions )
688
701
{
689
702
}
690
703
0 commit comments