From e1e8d5e26558e8bc84030b625c7b357d26d4b9c3 Mon Sep 17 00:00:00 2001 From: Alexandru Oltean Date: Tue, 12 Sep 2023 19:12:51 +0300 Subject: [PATCH] Fixed compatibility issue between 23.4 and 23.10 by removing the base class TextExpressionBase --- .../CSharp/Activities/CSharpReference.cs | 11 +++++----- .../CSharp/Activities/CSharpValue.cs | 13 ++++++------ .../Activities/TextExpressionHelper.cs} | 20 ++++++------------- .../Activities/VisualBasicReference.cs | 13 ++++++------ .../Activities/VisualBasicValue.cs | 13 ++++++------ 5 files changed, 29 insertions(+), 41 deletions(-) rename src/UiPath.Workflow/Microsoft/{TextExpressionBase.cs => VisualBasic/Activities/TextExpressionHelper.cs} (55%) diff --git a/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpReference.cs b/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpReference.cs index 121afdad..0d3dbaf3 100644 --- a/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpReference.cs +++ b/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpReference.cs @@ -5,7 +5,6 @@ using System.Activities; using System.Activities.Expressions; using System.Activities.Internals; -using System.Activities.Validation; using System.ComponentModel; using System.Diagnostics; using System.Linq.Expressions; @@ -15,7 +14,7 @@ namespace Microsoft.CSharp.Activities; [DebuggerStepThrough] [ContentProperty("ExpressionText")] -public class CSharpReference : TextExpressionBase>, ITextExpression +public class CSharpReference : CodeActivity>, ITextExpression { private CompiledExpressionInvoker _invoker; @@ -23,17 +22,17 @@ public class CSharpReference : TextExpressionBase>, I public CSharpReference(string expressionText) : this() => ExpressionText = expressionText; - public override string ExpressionText { get; set; } + public string ExpressionText { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public override string Language => CSharpHelper.Language; + public string Language => CSharpHelper.Language; - public override Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached)); + public Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached)); protected override void CacheMetadata(CodeActivityMetadata metadata) { _invoker = new CompiledExpressionInvoker(this, true, metadata); - QueueForValidation(metadata, true); + TextExpressionHelper.QueueForValidation(this, metadata, ExpressionText, Language, true); } protected override Location Execute(CodeActivityContext context) => (Location)_invoker.InvokeExpression(context); diff --git a/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpValue.cs b/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpValue.cs index 044b4b6d..1d65b1fb 100644 --- a/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpValue.cs +++ b/src/UiPath.Workflow/Microsoft/CSharp/Activities/CSharpValue.cs @@ -5,7 +5,6 @@ using System.Activities; using System.Activities.Expressions; using System.Activities.Internals; -using System.Activities.Validation; using System.ComponentModel; using System.Diagnostics; using System.Linq.Expressions; @@ -15,7 +14,7 @@ namespace Microsoft.CSharp.Activities; [DebuggerStepThrough] [ContentProperty("ExpressionText")] -public class CSharpValue : TextExpressionBase +public class CSharpValue : CodeActivity, ITextExpression { private CompiledExpressionInvoker _invoker; @@ -23,18 +22,18 @@ public class CSharpValue : TextExpressionBase public CSharpValue(string expressionText) : this() => ExpressionText = expressionText; - public override string ExpressionText { get; set; } + public string ExpressionText { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public override string Language => CSharpHelper.Language; + public string Language => CSharpHelper.Language; - public override Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached)); + public Expression GetExpressionTree() => IsMetadataCached ? _invoker.GetExpressionTree() : throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityIsUncached)); protected override void CacheMetadata(CodeActivityMetadata metadata) { _invoker = new CompiledExpressionInvoker(this, false, metadata); - QueueForValidation(metadata, false); + TextExpressionHelper.QueueForValidation(this, metadata, ExpressionText, Language, false); } - protected override TResult Execute(CodeActivityContext context) => (TResult) _invoker.InvokeExpression(context); + protected override TResult Execute(CodeActivityContext context) => (TResult)_invoker.InvokeExpression(context); } \ No newline at end of file diff --git a/src/UiPath.Workflow/Microsoft/TextExpressionBase.cs b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/TextExpressionHelper.cs similarity index 55% rename from src/UiPath.Workflow/Microsoft/TextExpressionBase.cs rename to src/UiPath.Workflow/Microsoft/VisualBasic/Activities/TextExpressionHelper.cs index 6014018e..a1f92d15 100644 --- a/src/UiPath.Workflow/Microsoft/TextExpressionBase.cs +++ b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/TextExpressionHelper.cs @@ -1,20 +1,12 @@ -using System.Activities.Expressions; -using System.Activities.Validation; -using System.Linq.Expressions; +using System.Activities.Validation; namespace System.Activities { - public abstract class TextExpressionBase : CodeActivity, ITextExpression + internal static class TextExpressionHelper { private static readonly Func _validationFunc = () => new(); - public abstract string ExpressionText { get; set; } - - public abstract string Language { get; } - - public abstract Expression GetExpressionTree(); - - protected bool QueueForValidation(CodeActivityMetadata metadata, bool isLocation) + public static bool QueueForValidation(Activity activity, CodeActivityMetadata metadata, string expressionText, string language, bool isLocation) { if (metadata.Environment.CompileExpressions) { @@ -26,12 +18,12 @@ protected bool QueueForValidation(CodeActivityMetadata metadata, bool isLocat var extension = metadata.Environment.Extensions.GetOrAdd(_validationFunc); extension.QueueExpressionForValidation(new() { - Activity = this, - ExpressionText = ExpressionText, + Activity = activity, + ExpressionText = expressionText, IsLocation = isLocation, ResultType = typeof(T), Environment = metadata.Environment - }, Language); + }, language); return true; } diff --git a/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicReference.cs b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicReference.cs index 099fde48..5010b60f 100644 --- a/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicReference.cs +++ b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicReference.cs @@ -7,7 +7,6 @@ using System.Activities.Expressions; using System.Activities.Internals; using System.Activities.Runtime; -using System.Activities.Validation; using System.Activities.XamlIntegration; using System.ComponentModel; using System.Diagnostics; @@ -18,8 +17,8 @@ namespace Microsoft.VisualBasic.Activities; [DebuggerStepThrough] -public sealed class VisualBasicReference : TextExpressionBase>, IValueSerializableExpression, - IExpressionContainer +public sealed class VisualBasicReference : CodeActivity>, IValueSerializableExpression, + IExpressionContainer, ITextExpression { private Expression> _expressionTree; private CompiledExpressionInvoker _invoker; @@ -29,12 +28,12 @@ public sealed class VisualBasicReference : TextExpressionBase ExpressionText = expressionText; - public override string ExpressionText { get; set; } + public string ExpressionText { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public override string Language => VisualBasicHelper.Language; + public string Language => VisualBasicHelper.Language; - public override Expression GetExpressionTree() + public Expression GetExpressionTree() { if (IsMetadataCached) { @@ -86,7 +85,7 @@ protected override void CacheMetadata(CodeActivityMetadata metadata) _expressionTree = null; _invoker = new CompiledExpressionInvoker(this, true, metadata); - if (QueueForValidation(metadata, true)) + if (TextExpressionHelper.QueueForValidation(this, metadata, ExpressionText, Language, true)) { return; } diff --git a/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicValue.cs b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicValue.cs index 05d9da5a..2fb8188e 100644 --- a/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicValue.cs +++ b/src/UiPath.Workflow/Microsoft/VisualBasic/Activities/VisualBasicValue.cs @@ -7,7 +7,6 @@ using System.Activities.Expressions; using System.Activities.Internals; using System.Activities.Runtime; -using System.Activities.Validation; using System.Activities.XamlIntegration; using System.ComponentModel; using System.Diagnostics; @@ -18,8 +17,8 @@ namespace Microsoft.VisualBasic.Activities; [DebuggerStepThrough] -public sealed class VisualBasicValue : TextExpressionBase, IValueSerializableExpression, - IExpressionContainer +public sealed class VisualBasicValue : CodeActivity, IValueSerializableExpression, + IExpressionContainer, ITextExpression { private Func _compiledExpression; private Expression> _expressionTree; @@ -29,12 +28,12 @@ public sealed class VisualBasicValue : TextExpressionBase, IVa public VisualBasicValue(string expressionText) : this() => ExpressionText = expressionText; - public override string ExpressionText { get; set; } + public string ExpressionText { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public override string Language => VisualBasicHelper.Language; + public string Language => VisualBasicHelper.Language; - public override Expression GetExpressionTree() + public Expression GetExpressionTree() { if (!IsMetadataCached) { @@ -87,7 +86,7 @@ protected override void CacheMetadata(CodeActivityMetadata metadata) _expressionTree = null; _invoker = new CompiledExpressionInvoker(this, false, metadata); - if (QueueForValidation(metadata, false)) + if (TextExpressionHelper.QueueForValidation(this, metadata, ExpressionText, Language, false)) { return; }