public NavigationPageFactoryService([NotNull] IServiceProvider serviceProvider) { if (serviceProvider == null) throw new ArgumentNullException(nameof(serviceProvider)); _providerHierarchy = CreatePageProvidersHierachy(CreatePageProviders(serviceProvider)); }
public NavigationPageFactoryService([NotNull] IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } _providerHierarchy = CreatePageProvidersHierachy(CreatePageProviders(serviceProvider)); }
private static NavigationPageProviderHierarchy CreatePageProvidersHierachy( IEnumerable <Pair <INavigationPageProvider, string> > providersWithMasks) { var result = new NavigationPageProviderHierarchy(); foreach (var providerWithMask in providersWithMasks) { result.Add(providerWithMask.Second.Split('/'), providerWithMask.First); } return(result); }
private void CreateNodes( IEnumerable <string> path, INavigationPageProvider provider) { var pathComponent = path.FirstOrDefault(); switch (pathComponent) { case null: if (Provider != null) { throw new ApplicationException( "Провайдер страниц навигации с данной маской уже существует."); } Provider = provider; break; case "*": if (path.Skip(1).Any()) { throw new ApplicationException( "Компонент маски пути '*' поддерживается только в качестве последнего элемента пути."); } if (ChildrensProvider != null) { throw new ApplicationException( "Провайдер страниц навигации с данной маской уже существует."); } ChildrensProvider = provider; break; default: var subNode = new NavigationPageProviderHierarchy(); _childrens.Add(pathComponent, subNode); subNode.CreateNodes(path.Skip(1), provider); break; } }
private void CreateNodes( IEnumerable<string> path, INavigationPageProvider provider) { var pathArray = path.ToArray(); var pathComponent = pathArray.FirstOrDefault(); switch (pathComponent) { case null: if (Provider != null) throw new ApplicationException( "Провайдер страниц навигации с данной маской уже существует."); Provider = provider; break; case "*": if (pathArray.Skip(1).Any()) throw new ApplicationException( "Компонент маски пути '*' поддерживается только в качестве последнего элемента пути."); if (ChildrensProvider != null) throw new ApplicationException( "Провайдер страниц навигации с данной маской уже существует."); ChildrensProvider = provider; break; default: var subNode = new NavigationPageProviderHierarchy(); Debug.Assert(pathComponent != null, "pathComponent != null"); _childrens.Add(pathComponent, subNode); subNode.CreateNodes(pathArray.Skip(1), provider); break; } }
private static NavigationPageProviderHierarchy CreatePageProvidersHierachy( IEnumerable<Tuple<INavigationPageProvider, string>> providersWithMasks) { var result = new NavigationPageProviderHierarchy(); foreach (var providerWithMask in providersWithMasks) result.Add(providerWithMask.Item2.Split('/'), providerWithMask.Item1); return result; }