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;
}
}
}
}
}
}