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