18
18
using System . Linq ;
19
19
using System . Linq . Expressions ;
20
20
using System . Text ;
21
+
21
22
using MongoDB . Bson ;
22
23
using MongoDB . Bson . IO ;
23
24
using MongoDB . Bson . Serialization ;
@@ -197,10 +198,8 @@ public static IMongoFields Null
197
198
/// <summary>
198
199
/// Adds one or more field names to be excluded from the results.
199
200
/// </summary>
200
- /// <param name="memberExpressions">One or more field names.</param>
201
- /// <returns>
202
- /// The builder (so method calls can be chained).
203
- /// </returns>
201
+ /// <param name="memberExpressions">The member expressions.</param>
202
+ /// <returns>The builder (so method calls can be chained).</returns>
204
203
public static FieldsBuilder < TDocument > Exclude ( params Expression < Func < TDocument , object > > [ ] memberExpressions )
205
204
{
206
205
return new FieldsBuilder < TDocument > ( ) . Exclude ( memberExpressions ) ;
@@ -210,9 +209,7 @@ public static FieldsBuilder<TDocument> Exclude(params Expression<Func<TDocument,
210
209
/// Adds one or more field names to be included in the results.
211
210
/// </summary>
212
211
/// <param name="memberExpressions">The member expressions.</param>
213
- /// <returns>
214
- /// The builder (so method calls can be chained).
215
- /// </returns>
212
+ /// <returns>The builder (so method calls can be chained).</returns>
216
213
public static FieldsBuilder < TDocument > Include ( params Expression < Func < TDocument , object > > [ ] memberExpressions )
217
214
{
218
215
return new FieldsBuilder < TDocument > ( ) . Include ( memberExpressions ) ;
@@ -221,28 +218,24 @@ public static FieldsBuilder<TDocument> Include(params Expression<Func<TDocument,
221
218
/// <summary>
222
219
/// Adds a slice to be included in the results.
223
220
/// </summary>
224
- /// <typeparam name="TMember ">The type of the member.</typeparam>
221
+ /// <typeparam name="TValue ">The type of the enumerable member values .</typeparam>
225
222
/// <param name="memberExpression">The member expression.</param>
226
223
/// <param name="size">The size of the slice (negative sizes are taken from the end).</param>
227
- /// <returns>
228
- /// The builder (so method calls can be chained).
229
- /// </returns>
230
- public static FieldsBuilder < TDocument > Slice < TMember > ( Expression < Func < TDocument , IEnumerable < TMember > > > memberExpression , int size )
224
+ /// <returns>The builder (so method calls can be chained).</returns>
225
+ public static FieldsBuilder < TDocument > Slice < TValue > ( Expression < Func < TDocument , IEnumerable < TValue > > > memberExpression , int size )
231
226
{
232
227
return new FieldsBuilder < TDocument > ( ) . Slice ( memberExpression , size ) ;
233
228
}
234
229
235
230
/// <summary>
236
231
/// Adds a slice to be included in the results.
237
232
/// </summary>
238
- /// <typeparam name="TMember ">The type of the member.</typeparam>
233
+ /// <typeparam name="TValue ">The type of the enumerable member values .</typeparam>
239
234
/// <param name="memberExpression">The member expression.</param>
240
235
/// <param name="skip">The number of values to skip.</param>
241
236
/// <param name="limit">The number of values to extract.</param>
242
- /// <returns>
243
- /// The builder (so method calls can be chained).
244
- /// </returns>
245
- public static FieldsBuilder < TDocument > Slice < TMember > ( Expression < Func < TDocument , IEnumerable < TMember > > > memberExpression , int skip , int limit )
237
+ /// <returns>The builder (so method calls can be chained).</returns>
238
+ public static FieldsBuilder < TDocument > Slice < TValue > ( Expression < Func < TDocument , IEnumerable < TValue > > > memberExpression , int skip , int limit )
246
239
{
247
240
return new FieldsBuilder < TDocument > ( ) . Slice ( memberExpression , skip , limit ) ;
248
241
}
@@ -255,7 +248,8 @@ public static FieldsBuilder<TDocument> Slice<TMember>(Expression<Func<TDocument,
255
248
[ Serializable ]
256
249
public class FieldsBuilder < TDocument > : BuilderBase , IMongoFields
257
250
{
258
- private readonly BsonSerializationInfoHelper _serializationHelper ;
251
+ // private fields
252
+ private readonly BsonSerializationInfoHelper _serializationInfoHelper ;
259
253
private FieldsBuilder _fieldsBuilder ;
260
254
261
255
// constructors
@@ -264,7 +258,7 @@ public class FieldsBuilder<TDocument> : BuilderBase, IMongoFields
264
258
/// </summary>
265
259
public FieldsBuilder ( )
266
260
{
267
- _serializationHelper = new BsonSerializationInfoHelper ( ) ;
261
+ _serializationInfoHelper = new BsonSerializationInfoHelper ( ) ;
268
262
_fieldsBuilder = new FieldsBuilder ( ) ;
269
263
}
270
264
@@ -273,13 +267,10 @@ public FieldsBuilder()
273
267
/// Adds one or more field names to be excluded from the results.
274
268
/// </summary>
275
269
/// <param name="memberExpressions">The member expressions.</param>
276
- /// <returns>
277
- /// The builder (so method calls can be chained).
278
- /// </returns>
270
+ /// <returns>The builder (so method calls can be chained).</returns>
279
271
public FieldsBuilder < TDocument > Exclude ( params Expression < Func < TDocument , object > > [ ] memberExpressions )
280
272
{
281
273
var elementNames = GetElementNames ( memberExpressions ) ;
282
-
283
274
_fieldsBuilder = _fieldsBuilder . Exclude ( elementNames . ToArray ( ) ) ;
284
275
return this ;
285
276
}
@@ -288,61 +279,53 @@ public FieldsBuilder<TDocument> Exclude(params Expression<Func<TDocument, object
288
279
/// Adds one or more field names to be included in the results.
289
280
/// </summary>
290
281
/// <param name="memberExpressions">The member expressions.</param>
291
- /// <returns>
292
- /// The builder (so method calls can be chained).
293
- /// </returns>
282
+ /// <returns>The builder (so method calls can be chained).</returns>
294
283
public FieldsBuilder < TDocument > Include ( params Expression < Func < TDocument , object > > [ ] memberExpressions )
295
284
{
296
285
var elementNames = GetElementNames ( memberExpressions ) ;
297
-
298
286
_fieldsBuilder = _fieldsBuilder . Include ( elementNames . ToArray ( ) ) ;
299
287
return this ;
300
288
}
301
289
302
290
/// <summary>
303
291
/// Adds a slice to be included in the results.
304
292
/// </summary>
305
- /// <typeparam name="TMember ">The type of the member.</typeparam>
293
+ /// <typeparam name="TValue ">The type of the enumerable member values .</typeparam>
306
294
/// <param name="memberExpression">The member expression.</param>
307
295
/// <param name="size">The size of the slice (negative sizes are taken from the end).</param>
308
- /// <returns>
309
- /// The builder (so method calls can be chained).
310
- /// </returns>
311
- public FieldsBuilder < TDocument > Slice < TMember > ( Expression < Func < TDocument , IEnumerable < TMember > > > memberExpression , int size )
296
+ /// <returns>The builder (so method calls can be chained).</returns>
297
+ public FieldsBuilder < TDocument > Slice < TValue > ( Expression < Func < TDocument , IEnumerable < TValue > > > memberExpression , int size )
312
298
{
313
- var info = _serializationHelper . GetSerializationInfo ( memberExpression ) ;
314
- _fieldsBuilder = _fieldsBuilder . Slice ( info . ElementName , size ) ;
299
+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
300
+ _fieldsBuilder = _fieldsBuilder . Slice ( serializationInfo . ElementName , size ) ;
315
301
return this ;
316
302
}
317
303
318
304
/// <summary>
319
305
/// Adds a slice to be included in the results.
320
306
/// </summary>
321
- /// <typeparam name="TMember ">The type of the member.</typeparam>
307
+ /// <typeparam name="TValue ">The type of the enumerable member values .</typeparam>
322
308
/// <param name="memberExpression">The member expression.</param>
323
309
/// <param name="skip">The number of values to skip.</param>
324
310
/// <param name="limit">The number of values to extract.</param>
325
- /// <returns>
326
- /// The builder (so method calls can be chained).
327
- /// </returns>
328
- public FieldsBuilder < TDocument > Slice < TMember > ( Expression < Func < TDocument , IEnumerable < TMember > > > memberExpression , int skip , int limit )
311
+ /// <returns>The builder (so method calls can be chained).</returns>
312
+ public FieldsBuilder < TDocument > Slice < TValue > ( Expression < Func < TDocument , IEnumerable < TValue > > > memberExpression , int skip , int limit )
329
313
{
330
- var info = _serializationHelper . GetSerializationInfo ( memberExpression ) ;
331
- _fieldsBuilder = _fieldsBuilder . Slice ( info . ElementName , skip , limit ) ;
314
+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
315
+ _fieldsBuilder = _fieldsBuilder . Slice ( serializationInfo . ElementName , skip , limit ) ;
332
316
return this ;
333
317
}
334
318
335
319
/// <summary>
336
320
/// Converts this object to a BsonDocument.
337
321
/// </summary>
338
- /// <returns>
339
- /// A BsonDocument.
340
- /// </returns>
322
+ /// <returns>A BsonDocument.</returns>
341
323
public override BsonDocument ToBsonDocument ( )
342
324
{
343
325
return _fieldsBuilder . ToBsonDocument ( ) ;
344
326
}
345
327
328
+ // protected methods
346
329
/// <summary>
347
330
/// Serializes the result of the builder to a BsonWriter.
348
331
/// </summary>
@@ -354,10 +337,11 @@ protected override void Serialize(BsonWriter bsonWriter, Type nominalType, IBson
354
337
( ( IBsonSerializable ) _fieldsBuilder ) . Serialize ( bsonWriter , nominalType , options ) ;
355
338
}
356
339
340
+ // private methods
357
341
private IEnumerable < string > GetElementNames ( IEnumerable < Expression < Func < TDocument , object > > > memberExpressions )
358
342
{
359
343
var elementNames = memberExpressions
360
- . Select ( x => _serializationHelper . GetSerializationInfo ( x ) )
344
+ . Select ( x => _serializationInfoHelper . GetSerializationInfo ( x ) )
361
345
. Select ( x => x . ElementName ) ;
362
346
return elementNames ;
363
347
}
0 commit comments