diff --git a/src/Masa.Blazor/Core/MasaComponentBase.cs b/src/Masa.Blazor/Core/MasaComponentBase.cs index 7e947d4b70..0e0263a60d 100644 --- a/src/Masa.Blazor/Core/MasaComponentBase.cs +++ b/src/Masa.Blazor/Core/MasaComponentBase.cs @@ -51,7 +51,7 @@ public ForwardRef RefBack private ElementReference? _prevRef; private bool _elementReferenceChanged; - protected ILogger Logger => LoggerFactory.CreateLogger(GetType()); + public ILogger Logger => LoggerFactory.CreateLogger(GetType()); #region Build class and style diff --git a/src/Masa.Blazor/Mixins/Routable/IRoutable.cs b/src/Masa.Blazor/Mixins/Routable/IRoutable.cs index fefc8b06e2..f6ec4c3720 100644 --- a/src/Masa.Blazor/Mixins/Routable/IRoutable.cs +++ b/src/Masa.Blazor/Mixins/Routable/IRoutable.cs @@ -4,6 +4,8 @@ namespace Masa.Blazor; public interface IRoutable { + ILogger Logger { get; } + IDictionary Attributes { get; } bool Disabled { get; } @@ -40,7 +42,7 @@ public interface IRoutable public int Tabindex => Attributes.TryGetValue("tabindex", out var tabindex) ? Convert.ToInt32(tabindex) : 0; - public(string tag, Dictionary) GenerateRouteLink() + public (string tag, Dictionary) GenerateRouteLink() { string tag; Dictionary attrs = new(Attributes); @@ -69,7 +71,15 @@ public bool MatchRoute() var absolutePath = NavigationManager.GetAbsolutePath(); - return MatchRoute(Href, absolutePath, Exact, MatchPattern); + try + { + return MatchRoute(Href, absolutePath, Exact, MatchPattern); + } + catch (RegexParseException) + { + Logger.LogError("Invalid regular expression pattern: {MatchPattern}", MatchPattern); + return false; + } } public static bool MatchRoute(string href, string absolutePath, bool exact, string? matchPattern) @@ -100,4 +110,4 @@ private static string FormatUrl(string url) return url; } -} +} \ No newline at end of file diff --git a/src/Masa.Blazor/Mixins/Routable/Router.cs b/src/Masa.Blazor/Mixins/Routable/Router.cs index b4a81843ee..72e1b6cc97 100644 --- a/src/Masa.Blazor/Mixins/Routable/Router.cs +++ b/src/Masa.Blazor/Mixins/Routable/Router.cs @@ -14,6 +14,7 @@ public Router(IRoutable routable) Exact = routable.Exact; NavigationManager = routable.NavigationManager; MatchPattern = routable.MatchPattern; + Logger = routable.Logger; } public IDictionary Attributes { get; set; } @@ -35,4 +36,6 @@ public Router(IRoutable routable) public string? MatchPattern { get; set; } public NavigationManager NavigationManager { get; set; } -} + + public ILogger Logger { get; set; } +} \ No newline at end of file