public static IEnumerable<IActionResult> ExecuteToChildren( IManager pManager, IAction pAction, bool pCheckSource) { ArgumentsValidation.NotNull(pManager, "pManager"); ArgumentsValidation.NotNull(pAction, "pAction"); var result = new List<IActionResult>(); var children = pManager.GetChildren(); if (children != null) { var checkedChildren = children.Where(x => !pCheckSource || !ReferenceEquals(x, pAction.GetSource())); foreach (var child in checkedChildren) { var r = child.Execute(pManager, pAction); if (r == null || r is NotAvailableActionResult) { continue; } result.Add(r); } } return new ReadOnlyCollection<IActionResult>(result); }
public static IEnumerable<IActionResult> ExecuteToParent( IManager pManager, IAction pAction, bool pCheckSource) { ArgumentsValidation.NotNull(pManager, "pManager"); ArgumentsValidation.NotNull(pAction, "pAction"); var result = new List<IActionResult>(); var parent = pManager.GetParent(); if (parent != null && (!pCheckSource || !ReferenceEquals(parent, pAction.GetSource()))) { var r = parent.Execute(pManager, pAction); if (r != null && !(r is NotAvailableActionResult)) { result.Add(r); } } return new ReadOnlyCollection<IActionResult>(result); }