diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs index aba7ae1ac..1deb59793 100644 --- a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs @@ -8,9 +8,7 @@ using Elsa.Workflows; using Elsa.Workflows.Activities; using Elsa.Workflows.Memory; using Elsa.Workflows.Models; -using Elsa.Workflows.Options; using Humanizer; -using Microsoft.Extensions.Options; // ReSharper disable once CheckNamespace namespace Elsa.Extensions; @@ -74,12 +72,22 @@ public static class ExpressionExecutionContextExtensions /// /// Returns the of the specified /// - public static WorkflowExecutionContext GetWorkflowExecutionContext(this ExpressionExecutionContext context) => (WorkflowExecutionContext)context.TransientProperties[WorkflowExecutionContextKey]; + public static WorkflowExecutionContext GetWorkflowExecutionContext(this ExpressionExecutionContext context) + { + return context.TransientProperties.TryGetValue(WorkflowExecutionContextKey, out var value) + ? (WorkflowExecutionContext)value + : throw new InvalidOperationException("WorkflowExecutionContext not found. This value exists only on activity execution contexts."); + } /// /// Returns the of the specified /// - public static ActivityExecutionContext GetActivityExecutionContext(this ExpressionExecutionContext context) => (ActivityExecutionContext)context.TransientProperties[ActivityExecutionContextKey]; + public static ActivityExecutionContext GetActivityExecutionContext(this ExpressionExecutionContext context) + { + return context.TransientProperties.TryGetValue(ActivityExecutionContextKey, out var value) + ? (ActivityExecutionContext)value + : throw new InvalidOperationException("ActivityExecutionContext not found. This value exists only on activity execution contexts."); + } /// /// Returns the of the specified @@ -89,7 +97,12 @@ public static class ExpressionExecutionContextExtensions /// /// Returns the of the specified /// - public static IActivity GetActivity(this ExpressionExecutionContext context) => (IActivity)context.TransientProperties[ActivityKey]; + public static IActivity GetActivity(this ExpressionExecutionContext context) + { + return context.TransientProperties.TryGetValue(ActivityKey, out var value) + ? (IActivity)value + : throw new InvalidOperationException("Activity not found. This value exists only on activity execution contexts."); + } /// /// Returns the value of the specified input.