Пример #1
0
        /// <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));
        }
Пример #2
0
        /// <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));
        }