public static void Main()
var normalCommand1 = new Command1();
var normalCommand2 = new Command2();
var scheduledCommand = new ScheduledWorkflowCommand(DateTimeOffset.UtcNow.AddDays(1), new Command2());
public class ScheduledWorkflowCommand
public ScheduledWorkflowCommand(
DateTimeOffset executeAfter,
this.ExecuteAfter = executeAfter;
public DateTimeOffset ExecuteAfter { get; }
public WorkflowCommand Command { get; }
public abstract class WorkflowCommand : IRequest<Result>
public WorkflowCommand(string stepDisplayName) => this.StepDisplayName = stepDisplayName;
public string StepDisplayName { get; }
public class Command1 : WorkflowCommand
public Command1() : base("Step 1")
public class Command2 : WorkflowCommand
public Command2() : base("Step 1")