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); }
public NavigationMenuController(INavigationMenu localVar) { _local = localVar; }