@@ -54,13 +54,15 @@ public abstract class MongoCursor : IEnumerable
5454 /// <param name="query">The query.</param>
5555 /// <param name="readPreference">The read preference.</param>
5656 /// <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 )
5859 {
5960 _collection = collection ;
6061 _database = collection . Database ;
6162 _server = collection . Database . Server ;
6263 _query = query ;
6364 _serializer = serializer ;
65+ _serializationOptions = serializationOptions ;
6466 _readPreference = readPreference ;
6567 }
6668
@@ -254,13 +256,16 @@ public virtual bool IsFrozen
254256 /// <param name="query">A query.</param>
255257 /// <param name="readPreference">The read preference.</param>
256258 /// <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 )
259264 {
260265 var cursorDefinition = typeof ( MongoCursor < > ) ;
261266 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 } ) ;
264269 }
265270
266271 // public methods
@@ -279,10 +284,13 @@ public virtual MongoCursor<TDocument> Clone<TDocument>()
279284 /// </summary>
280285 /// <typeparam name="TDocument">The type of the documents returned.</typeparam>
281286 /// <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 )
284292 {
285- return ( MongoCursor < TDocument > ) Clone ( typeof ( TDocument ) , serializer ) ;
293+ return ( MongoCursor < TDocument > ) Clone ( typeof ( TDocument ) , serializer , serializationOptions ) ;
286294 }
287295
288296 /// <summary>
@@ -292,18 +300,22 @@ public virtual MongoCursor<TDocument> Clone<TDocument>(IBsonSerializer serialize
292300 /// <returns>A clone of the cursor.</returns>
293301 public virtual MongoCursor Clone ( Type documentType )
294302 {
295- return Clone ( documentType , _serializer ) ;
303+ var serializer = BsonSerializer . LookupSerializer ( documentType ) ;
304+ return Clone ( documentType , serializer , null ) ;
296305 }
297306
298307 /// <summary>
299308 /// Creates a clone of the cursor.
300309 /// </summary>
301310 /// <param name="documentType">The type of the documents returned.</param>
302311 /// <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 )
305317 {
306- var clone = Create ( documentType , _collection , _query , _readPreference , serializer ) ;
318+ var clone = Create ( documentType , _collection , _query , _readPreference , serializer , serializationOptions ) ;
307319 clone . _options = _options == null ? null : ( BsonDocument ) _options . Clone ( ) ;
308320 clone . _flags = _flags ;
309321 clone . _skip = _skip ;
@@ -347,7 +359,7 @@ public virtual BsonDocument Explain()
347359 public virtual BsonDocument Explain ( bool verbose )
348360 {
349361 _isFrozen = true ;
350- var clone = Clone < BsonDocument > ( BsonDocumentSerializer . Instance ) ;
362+ var clone = Clone < BsonDocument > ( BsonDocumentSerializer . Instance , null ) ;
351363 clone . SetOption ( "$explain" , true ) ;
352364 clone . _limit = - clone . _limit ; // TODO: should this be -1?
353365 var explanation = clone . FirstOrDefault ( ) ;
@@ -683,8 +695,9 @@ public class MongoCursor<TDocument> : MongoCursor, IEnumerable<TDocument>
683695 /// <param name="query">The query.</param>
684696 /// <param name="readPreference">The read preference.</param>
685697 /// <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 )
688701 {
689702 }
690703
0 commit comments