@@ -151,8 +151,7 @@ protected override Expression VisitConditional(ConditionalExpression conditional
151
151
{
152
152
var newTestExpression = TryGetConstantValue ( conditionalExpression . Test ) ?? Visit ( conditionalExpression . Test ) ;
153
153
154
- if ( newTestExpression is ConstantExpression constantTestExpression
155
- && constantTestExpression . Value is bool constantTestValue )
154
+ if ( newTestExpression is ConstantExpression { Value : bool constantTestValue } )
156
155
{
157
156
return constantTestValue
158
157
? Visit ( conditionalExpression . IfTrue )
@@ -227,8 +226,7 @@ protected override Expression VisitBinary(BinaryExpression binaryExpression)
227
226
}
228
227
229
228
private static bool ShortCircuitLogicalExpression ( Expression expression , ExpressionType nodeType )
230
- => expression is ConstantExpression constantExpression
231
- && constantExpression . Value is bool constantValue
229
+ => expression is ConstantExpression { Value : bool constantValue }
232
230
&& ( ( constantValue && nodeType == ExpressionType . OrElse )
233
231
|| ( ! constantValue && nodeType == ExpressionType . AndAlso ) ) ;
234
232
@@ -265,7 +263,7 @@ private static Expression GenerateConstantExpression(object? value, Type returnT
265
263
266
264
return constantExpression . Type != returnType
267
265
? Expression . Convert ( constantExpression , returnType )
268
- : ( Expression ) constantExpression ;
266
+ : constantExpression ;
269
267
}
270
268
271
269
private Expression Evaluate ( Expression expression , bool generateParameter )
@@ -365,8 +363,7 @@ public ContextParameterReplacingExpressionVisitor(Type contextType)
365
363
private static Expression RemoveConvert ( Expression expression )
366
364
{
367
365
if ( expression is UnaryExpression unaryExpression
368
- && ( expression . NodeType == ExpressionType . Convert
369
- || expression . NodeType == ExpressionType . ConvertChecked ) )
366
+ && expression . NodeType is ExpressionType . Convert or ExpressionType . ConvertChecked )
370
367
{
371
368
return RemoveConvert ( unaryExpression . Operand ) ;
372
369
}
@@ -436,18 +433,16 @@ private static Expression RemoveConvert(Expression expression)
436
433
parameterName = methodCallExpression . Method . Name ;
437
434
break ;
438
435
439
- case UnaryExpression unaryExpression
440
- when ( unaryExpression . NodeType == ExpressionType . Convert
441
- || unaryExpression . NodeType == ExpressionType . ConvertChecked )
442
- && ( unaryExpression . Type . UnwrapNullableType ( ) == unaryExpression . Operand . Type ) :
436
+ case UnaryExpression { NodeType : ExpressionType . Convert or ExpressionType . ConvertChecked } unaryExpression
437
+ when ( unaryExpression . Type . UnwrapNullableType ( ) == unaryExpression . Operand . Type ) :
443
438
return GetValue ( unaryExpression . Operand , out parameterName ) ;
444
439
}
445
440
446
441
try
447
442
{
448
443
return Expression . Lambda < Func < object > > (
449
444
Expression . Convert ( expression , typeof ( object ) ) )
450
- . Compile ( )
445
+ . Compile ( preferInterpretation : true )
451
446
. Invoke ( ) ;
452
447
}
453
448
catch ( Exception exception )
@@ -611,7 +606,7 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp
611
606
protected override Expression VisitMember ( MemberExpression memberExpression )
612
607
{
613
608
_containsClosure = memberExpression . Expression != null
614
- || ! ( memberExpression . Member is FieldInfo fieldInfo && fieldInfo . IsInitOnly ) ;
609
+ || ! ( memberExpression . Member is FieldInfo { IsInitOnly : true } ) ;
615
610
return base . VisitMember ( memberExpression ) ;
616
611
}
617
612
0 commit comments