public static T Merge <T>(this T target, T source, Func <T, IEnumerable <T> > GetChildren = null) where T : INavigationMenu <T>
        {
            if (GetChildren != null)
            {
                target.Children.Clear();

                foreach (T child in GetChildren.Invoke(target).ToList())
                {
                    target.Children.Add(child);
                }
            }

            foreach (T thisNav in source.Children.ToList())
            {
                INavigationMenu <T> existingNav = target.Children.Where(n => n.Uri == thisNav.Uri).FirstOrDefault();

                if (existingNav == null)
                {
                    target.AddChild(thisNav);
                }
                else
                {
                    Merge((T)existingNav, thisNav, GetChildren);
                }
            }

            return(target);
        }
Example #2
0
 public NavigationMenuController(INavigationMenu localVar)
 {
     _local = localVar;
 }