10
10
11
11
namespace NHibernate . Linq . Functions
12
12
{
13
- public class ConvertToInt32Generator : BaseHqlGeneratorForMethod
13
+ public abstract class ConvertToGenerator < T > : BaseHqlGeneratorForMethod
14
+ {
15
+ public override HqlTreeNode BuildHql ( MethodInfo method , Expression targetObject , ReadOnlyCollection < Expression > arguments , HqlTreeBuilder treeBuilder , IHqlExpressionVisitor visitor )
16
+ {
17
+ return treeBuilder . Cast ( visitor . Visit ( arguments [ 0 ] ) . AsExpression ( ) , typeof ( T ) ) ;
18
+ }
19
+ }
20
+
21
+ //NH-3720
22
+ public class ConvertToDateTimeGenerator : ConvertToGenerator < DateTime >
23
+ {
24
+ public ConvertToDateTimeGenerator ( )
25
+ {
26
+ SupportedMethods = new [ ]
27
+ {
28
+ ReflectionHelper . GetMethodDefinition < string > ( s => DateTime . Parse ( s ) ) ,
29
+ ReflectionHelper . GetMethodDefinition < string > ( o => Convert . ToDateTime ( o ) )
30
+ } ;
31
+ }
32
+ }
33
+
34
+ //NH-3720
35
+ public class ConvertToBooleanGenerator : ConvertToGenerator < Boolean >
36
+ {
37
+ public ConvertToBooleanGenerator ( )
38
+ {
39
+ SupportedMethods = new [ ]
40
+ {
41
+ ReflectionHelper . GetMethodDefinition < string > ( s => Boolean . Parse ( s ) ) ,
42
+ ReflectionHelper . GetMethodDefinition < string > ( o => Convert . ToBoolean ( o ) )
43
+ } ;
44
+ }
45
+ }
46
+
47
+
48
+ public class ConvertToInt32Generator : ConvertToGenerator < int >
14
49
{
15
50
public ConvertToInt32Generator ( )
16
51
{
@@ -34,14 +69,9 @@ public ConvertToInt32Generator()
34
69
ReflectionHelper . GetMethodDefinition < ushort > ( o => Convert . ToInt32 ( o ) )
35
70
} ;
36
71
}
37
-
38
- public override HqlTreeNode BuildHql ( MethodInfo method , Expression targetObject , ReadOnlyCollection < Expression > arguments , HqlTreeBuilder treeBuilder , IHqlExpressionVisitor visitor )
39
- {
40
- return treeBuilder . Cast ( visitor . Visit ( arguments [ 0 ] ) . AsExpression ( ) , typeof ( int ) ) ;
41
- }
42
72
}
43
73
44
- public class ConvertToDecimalGenerator : BaseHqlGeneratorForMethod
74
+ public class ConvertToDecimalGenerator : ConvertToGenerator < decimal >
45
75
{
46
76
public ConvertToDecimalGenerator ( )
47
77
{
@@ -64,14 +94,9 @@ public ConvertToDecimalGenerator()
64
94
ReflectionHelper . GetMethodDefinition < ushort > ( o => Convert . ToDecimal ( o ) )
65
95
} ;
66
96
}
67
-
68
- public override HqlTreeNode BuildHql ( MethodInfo method , Expression targetObject , ReadOnlyCollection < Expression > arguments , HqlTreeBuilder treeBuilder , IHqlExpressionVisitor visitor )
69
- {
70
- return treeBuilder . Cast ( visitor . Visit ( arguments [ 0 ] ) . AsExpression ( ) , typeof ( decimal ) ) ;
71
- }
72
97
}
73
98
74
- public class ConvertToDoubleGenerator : BaseHqlGeneratorForMethod
99
+ public class ConvertToDoubleGenerator : ConvertToGenerator < double >
75
100
{
76
101
public ConvertToDoubleGenerator ( )
77
102
{
@@ -94,10 +119,5 @@ public ConvertToDoubleGenerator()
94
119
ReflectionHelper . GetMethodDefinition < ushort > ( o => Convert . ToDouble ( o ) )
95
120
} ;
96
121
}
97
-
98
- public override HqlTreeNode BuildHql ( MethodInfo method , Expression targetObject , ReadOnlyCollection < Expression > arguments , HqlTreeBuilder treeBuilder , IHqlExpressionVisitor visitor )
99
- {
100
- return treeBuilder . Cast ( visitor . Visit ( arguments [ 0 ] ) . AsExpression ( ) , typeof ( double ) ) ;
101
- }
102
122
}
103
123
}
0 commit comments