private static List<object> FindDescendentFromPick(Pick pickActivity, object descendent) { List<object> path = new List<object>(); path.Add(pickActivity); foreach (PickBranch branch in pickActivity.Branches) { if (branch == descendent) { break; } else if (branch.Trigger == descendent) { path.Add(branch); break; } else if (branch.Action == descendent) { path.Add(branch); break; } else { bool isVariableError = false; foreach (Variable variable in branch.Variables) { if (variable.Default == descendent) { isVariableError = true; break; } } if (isVariableError) { path.Add(branch); break; } } } path.Add(descendent); return path; }
private static List<object> FindRelativePath(Pick pickActivity, object descendent) { List<object> path = FindDescendentFromPick(pickActivity, descendent); path.Reverse(); return path; }