public static NavigationServiceBuilder AddProvider <TNavigationItem>(this NavigationServiceBuilder builder, INavigationProvider <TNavigationItem> provider, Action <IServiceProvider, NavigationOptions <TNavigationItem> > configure) where TNavigationItem : NavigationItem <TNavigationItem>, new() { builder.Services.TryAddScoped(typeof(INavigationProvider <TNavigationItem>), serviceProvider => provider); builder.Services.TryAddScoped(typeof(NavigationOptions <TNavigationItem>), serviceProvider => { var options = new NavigationOptions <TNavigationItem>(); configure?.Invoke(serviceProvider, options); return(options); }); return(builder); }
public static NavigationServiceBuilder AddNavigation(this IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var builder = new NavigationServiceBuilder(services); services.AddMemoryCache(); services.TryAddSingleton <INavigationCache, NavigationCache>(); services.TryAddScoped(typeof(INavigationBuilder <>), typeof(NavigationBuilder <>)); services.TryAddScoped(typeof(INavigation <>), typeof(Navigation <>)); services.TryAddScoped(typeof(IBreadcrumbNavigation <>), typeof(BreadcrumbNavigation <>)); return(builder); }
public static NavigationServiceBuilder AddProvider <TNavigationItem>(this NavigationServiceBuilder builder, INavigationProvider <TNavigationItem> provider, Action <NavigationOptions <TNavigationItem> > configure = null) where TNavigationItem : NavigationItem <TNavigationItem>, new() => AddProvider(builder, provider, (_, options) => configure?.Invoke(options));
public static NavigationServiceBuilder AddXml <TNavigationItem>(this NavigationServiceBuilder builder, string path, Action <IServiceProvider, NavigationOptions <TNavigationItem> > configure) where TNavigationItem : NavigationItem <TNavigationItem>, new() => AddProvider(builder, new XmlNavigationProvider <TNavigationItem>(path), configure);
public static NavigationServiceBuilder AddXml <TNavigationItem>(this NavigationServiceBuilder builder, string path, Action <NavigationOptions <TNavigationItem> > configure = null) where TNavigationItem : NavigationItem <TNavigationItem>, new() => AddXml <TNavigationItem>(builder, path, (_, options) => configure?.Invoke(options));