@@ -88,6 +88,17 @@ public class CustomClassWithMethodWithDynamicLinqTypeAttribute
88
88
public int GetAge ( int x ) => x ;
89
89
}
90
90
91
+ [ DynamicLinqType ]
92
+ public interface ICustomInterfaceWithMethodWithDynamicLinqTypeAttribute
93
+ {
94
+ int GetAge ( int x ) ;
95
+ }
96
+
97
+ public class CustomClassImplementingInterface : ICustomInterfaceWithMethodWithDynamicLinqTypeAttribute
98
+ {
99
+ public int GetAge ( int x ) => x ;
100
+ }
101
+
91
102
[ DynamicLinqType ]
92
103
public class CustomClassWithStaticMethodWithDynamicLinqTypeAttribute
93
104
{
@@ -1057,7 +1068,7 @@ public void DynamicExpressionParser_ParseLambda_CustomStaticMethod_WhenClassHasD
1057
1068
// Act
1058
1069
var lambdaExpression = DynamicExpressionParser . ParseLambda ( typeof ( CustomClassWithStaticMethodWithDynamicLinqTypeAttribute ) , null , expression ) ;
1059
1070
var del = lambdaExpression . Compile ( ) ;
1060
- var result = ( int ) del . DynamicInvoke ( context ) ;
1071
+ var result = ( int ? ) del . DynamicInvoke ( context ) ;
1061
1072
1062
1073
// Assert
1063
1074
Check . That ( result ) . IsEqualTo ( 10 ) ;
@@ -1073,12 +1084,28 @@ public void DynamicExpressionParser_ParseLambda_CustomMethod_WhenClassHasDynamic
1073
1084
// Act
1074
1085
var lambdaExpression = DynamicExpressionParser . ParseLambda ( typeof ( CustomClassWithMethodWithDynamicLinqTypeAttribute ) , null , expression ) ;
1075
1086
var del = lambdaExpression . Compile ( ) ;
1076
- var result = ( int ) del . DynamicInvoke ( context ) ;
1087
+ var result = ( int ? ) del . DynamicInvoke ( context ) ;
1077
1088
1078
1089
// Assert
1079
1090
Check . That ( result ) . IsEqualTo ( 10 ) ;
1080
1091
}
1081
1092
1093
+ [ Fact ]
1094
+ public void DynamicExpressionParser_ParseLambda_CustomInterface_WhenInterfaceHasDynamicLinqTypeAttribute_ShouldWorkCorrect ( )
1095
+ {
1096
+ // Arrange
1097
+ var context = new CustomClassImplementingInterface ( ) ;
1098
+ var expression = $ "{ nameof ( ICustomInterfaceWithMethodWithDynamicLinqTypeAttribute . GetAge ) } (10)";
1099
+
1100
+ // Act
1101
+ var lambdaExpression = DynamicExpressionParser . ParseLambda ( typeof ( ICustomInterfaceWithMethodWithDynamicLinqTypeAttribute ) , null , expression ) ;
1102
+ var del = lambdaExpression . Compile ( ) ;
1103
+ var result = ( int ? ) del . DynamicInvoke ( context ) ;
1104
+
1105
+ // Assert
1106
+ result . Should ( ) . Be ( 10 ) ;
1107
+ }
1108
+
1082
1109
[ Fact ]
1083
1110
public void DynamicExpressionParser_ParseLambda_CustomMethod_WhenClassDoesNotHaveDynamicLinqTypeAttribute_ShouldThrowException ( )
1084
1111
{
0 commit comments