/// <summary> /// Add an activity execution to the event's behavior /// </summary> /// <typeparam name="TInstance">The state machine instance type</typeparam> /// <typeparam name="TData">The event data type</typeparam> /// <param name="binder">The event binder</param> /// <param name="activityFactory">The factory method which returns the activity to execute</param> public static EventActivityBinder <TInstance, TData> ExecuteAsync <TInstance, TData>( this EventActivityBinder <TInstance, TData> binder, Func <BehaviorContext <TInstance, TData>, Task <Activity <TInstance, TData> > > activityFactory) where TInstance : class { var activity = new AsyncFactoryActivity <TInstance, TData>(activityFactory); return(binder.Add(activity)); }
/// <summary> /// Add an activity execution to the event's behavior /// </summary> /// <typeparam name="TInstance">The state machine instance type</typeparam> /// <typeparam name="TData">The event data type</typeparam> /// <param name="binder">The event binder</param> /// <param name="activityFactory">The factory method which returns the activity to execute</param> public static EventActivityBinder <TInstance, TData> ExecuteAsync <TInstance, TData>( this EventActivityBinder <TInstance, TData> binder, Func <BehaviorContext <TInstance, TData>, Task <Activity <TInstance> > > activityFactory) where TInstance : class { var activity = new AsyncFactoryActivity <TInstance, TData>(async context => { Activity <TInstance> newActivity = await activityFactory(context).ConfigureAwait(false); return(new SlimActivity <TInstance, TData>(newActivity)); }); return(binder.Add(activity)); }