public static ITranslation For(DynamicExpression dynamicExpression, ITranslationContext context) { var args = new DynamicTranslationArgs(dynamicExpression, context); if (DynamicMemberAccessTranslation.TryGetTranslation(args, out var translation)) { return(translation); } if (DynamicMemberWriteTranslation.TryGetTranslation(args, out translation)) { return(translation); } if (DynamicMethodCallTranslation.TryGetTranslation(args, out translation)) { return(translation); } return(new FixedValueTranslation( ExpressionType.Dynamic, args.OperationDescription, dynamicExpression.Type, TokenType.Default, context)); }
public static bool TryGetTranslation(DynamicTranslationArgs args, out ITranslation translation) { if (!args.IsMatch(_matcher, out var match)) { translation = null; return(false); } var targetTranslation = DynamicMemberAccessTranslation.GetTranslation(args, match); translation = new AssignmentTranslation( ExpressionType.Assign, targetTranslation, args.LastArgument, args.Context); return(true); }