using System.Collections.Generic; using Core.Common.BaseDelftTools.Workflow; namespace Core.Common.BaseDelftTools.Extensions { /// /// Extension methods for . /// public static class CompositeActivityExtensions { /// /// Gets all activities recursively matching a given type. /// /// The type of activity to be matched for. /// The composite activity. /// An iterator over all activities implementing/inheriting . public static IEnumerable GetAllActivitiesRecursive(this ICompositeActivity compositeActivity) where T : IActivity { if (compositeActivity is T) { yield return (T) compositeActivity; } foreach (var subActivity in compositeActivity.Activities) { var compActivity = subActivity as ICompositeActivity; if (compActivity != null) { foreach (var activity in GetAllActivitiesRecursive(compActivity)) { yield return activity; } } else { if (subActivity is T) { yield return (T) subActivity; } } } } } }