88namespace BootstrapBlazor . Components ;
99
1010[ ExcludeFromCodeCoverage ]
11- #if NET5_0
12- internal static class RouteTableFactory
13- {
14- [ NotNull ]
15- private static Microsoft . AspNetCore . Components . Routing . IRouteTable ? Routes { get ; set ; }
16- private static readonly HashSet < Assembly > _assemblies = new ( ) ;
17-
18- /// <summary>
19- ///
20- /// </summary>
21- /// <param name="assemblies"></param>
22- /// <param name="url"></param>
23- /// <returns></returns>
24- public static RouteContext Create ( IEnumerable < Assembly > ? assemblies , string url )
25- {
26- RefreshRouteTable ( assemblies ) ;
27- if ( url . IndexOf ( "?" ) > 0 ) url = url [ ..url . IndexOf ( "?" ) ] ;
28- var routeContext = new Microsoft . AspNetCore . Components . Routing . RouteContext ( url ) ;
29- Routes . Route ( routeContext ) ;
30- return new RouteContext ( )
31- {
32- Handler = routeContext . Handler ,
33- Parameters = routeContext . Parameters ,
34- Segments = routeContext . Segments
35- } ;
36- }
37-
38- private static void RefreshRouteTable ( IEnumerable < Assembly > ? assemblies )
39- {
40- assemblies ??= Enumerable . Empty < Assembly > ( ) ;
41- var assembliesSet = new HashSet < Assembly > ( assemblies ) ;
42- if ( ! _assemblies . SetEquals ( assembliesSet ) )
43- {
44- Routes = Microsoft . AspNetCore . Components . Routing . RouteTableFactory . Create ( assemblies ) ;
45- _assemblies . Clear ( ) ;
46- _assemblies . UnionWith ( assembliesSet ) ;
47- }
48- }
49- }
50- #else
5111internal static class RouteTableFactory
5212{
5313 [ NotNull ]
@@ -63,7 +23,8 @@ internal static class RouteTableFactory
6323 public static RouteContext Create ( IEnumerable < Assembly > assemblies , string url )
6424 {
6525 RefreshRouteTable ( assemblies ) ;
66- if ( url . IndexOf ( "?" ) > 0 ) url = url [ ..url . IndexOf ( "?" ) ] ;
26+ var len = url . IndexOf ( "?" , StringComparison . OrdinalIgnoreCase ) ;
27+ if ( len > 0 ) url = url [ ..len ] ;
6728 var routeContext = new Microsoft . AspNetCore . Components . Routing . RouteContext ( url ) ;
6829 Routes . Route ( routeContext ) ;
6930 return new RouteContext ( )
@@ -85,4 +46,3 @@ private static void RefreshRouteTable(IEnumerable<Assembly> assemblies)
8546 }
8647 }
8748}
88- #endif
0 commit comments