elsa-core/src/modules/Elsa.CSharp/Notifications/EvaluatingJavaScript.cs
Sipke Schoorstra 5d1a1aaf86
Add C# expression support (#4594)
* Initial version of c# expressions

* Add support for strongly-typed workflow variable accessors

* Fix type casting

* Rename c# to C# in XML comments

* Rename Globals.Context to ExecutionContext and Variables to Context

* Move RunJavaScript activity to Elsa.JavaScript

* Add RunCSharp activity

* Add CSharpOptions

* Add common workflow properties and methods
2023-11-03 20:28:10 +01:00

40 lines
1.4 KiB
C#

using Elsa.Expressions.Models;
using Elsa.Mediator.Contracts;
using Microsoft.CodeAnalysis.Scripting;
namespace Elsa.CSharp.Notifications;
/// <summary>
/// This notification is published every time a C# expression is about to be evaluated.
/// It gives subscribers a chance to configure the <see cref="ScriptOptions"/> with additional functions and variables.
/// </summary>
public record EvaluatingCSharp(Script Script, ScriptOptions ScriptOptions, ExpressionExecutionContext Context) : INotification
{
/// <summary>
/// Configures the <see cref="ScriptOptions"/> with additional functions and variables.
/// </summary>
public EvaluatingCSharp ConfigureScriptOptions(Func<ScriptOptions, ScriptOptions> scriptOptions)
{
ScriptOptions = scriptOptions(ScriptOptions);
return this;
}
/// <summary>
/// Appends the specified script to the current script.
/// </summary>
public EvaluatingCSharp AppendScript(string script)
{
Script = Script.ContinueWith(script, ScriptOptions);
return this;
}
/// <summary>
/// The <see cref="ScriptOptions"/> that will be used to evaluate the expression.
/// </summary>
public ScriptOptions ScriptOptions { get; set; } = ScriptOptions;
/// <summary>
/// The <see cref="ScriptState"/> that will be used to evaluate the expression.
/// </summary>
public Script Script { get; set; } = Script;
}