@@ -34,12 +34,15 @@ namespace MongoDB.Driver.Linq.Translators
3434{
3535 internal sealed class PredicateTranslator
3636 {
37+ #region static
38+ // private static fields
3739 private static readonly FilterDefinitionBuilder < BsonDocument > __builder = new FilterDefinitionBuilder < BsonDocument > ( ) ;
3840
41+ // public static methods
3942 public static BsonDocument Translate < TDocument > ( Expression < Func < TDocument , bool > > predicate , IBsonSerializer < TDocument > parameterSerializer , IBsonSerializerRegistry serializerRegistry )
4043 {
4144 var parameterExpression = new DocumentExpression ( parameterSerializer ) ;
42- var context = new PipelineBindingContext ( BsonSerializer . SerializerRegistry ) ;
45+ var context = new PipelineBindingContext ( serializerRegistry ) ;
4346 context . AddExpressionMapping ( predicate . Parameters [ 0 ] , parameterExpression ) ;
4447
4548 var node = PartialEvaluator . Evaluate ( predicate . Body ) ;
@@ -51,16 +54,23 @@ public static BsonDocument Translate<TDocument>(Expression<Func<TDocument, bool>
5154
5255 public static BsonDocument Translate ( Expression node , IBsonSerializerRegistry serializerRegistry )
5356 {
54- var translator = new PredicateTranslator ( ) ;
57+ var translator = new PredicateTranslator ( serializerRegistry ) ;
5558 node = FieldExpressionFlattener . FlattenFields ( node ) ;
5659 return translator . Translate ( node )
5760 . Render ( serializerRegistry . GetSerializer < BsonDocument > ( ) , serializerRegistry ) ;
5861 }
62+ #endregion
5963
60- private PredicateTranslator ( )
64+ // private fields
65+ private readonly IBsonSerializerRegistry _serializerRegistry ;
66+
67+ // constructors
68+ private PredicateTranslator ( IBsonSerializerRegistry serializerRegistry )
6169 {
70+ _serializerRegistry = serializerRegistry ;
6271 }
6372
73+ // private methods
6474 private FilterDefinition < BsonDocument > Translate ( Expression node )
6575 {
6676 FilterDefinition < BsonDocument > filter = null ;
@@ -443,7 +453,7 @@ private FilterDefinition<BsonDocument> TranslateComparison(Expression variableEx
443453
444454 var fieldExpression = GetFieldExpression ( variableExpression ) ;
445455
446- var valueSerializer = FieldValueSerializerHelper . GetSerializerForValueType ( fieldExpression . Serializer , BsonSerializer . SerializerRegistry , constantExpression . Type , value ) ;
456+ var valueSerializer = FieldValueSerializerHelper . GetSerializerForValueType ( fieldExpression . Serializer , _serializerRegistry , constantExpression . Type , value ) ;
447457 var serializedValue = valueSerializer . ToBsonValue ( value ) ;
448458
449459 switch ( operatorType )
@@ -1627,6 +1637,7 @@ private IFieldExpression GetFieldExpression(Expression expression)
16271637 return fieldExpression ;
16281638 }
16291639
1640+ // nested types
16301641 private class DocumentToFieldConverter : ExtensionExpressionVisitor
16311642 {
16321643 public static Expression Convert ( Expression node )
0 commit comments