From 7418fd7dc39aa91ea70dc4dcc2a4c5246ec71993 Mon Sep 17 00:00:00 2001 From: Steven He Date: Fri, 15 Apr 2022 18:19:07 +0800 Subject: [PATCH] Apply code review feedbacks --- Avalonia.sln | 2 +- src/Avalonia.Base/Avalonia.Base.csproj | 1 + src/Avalonia.Base/Input/KeyGesture.cs | 12 ++---------- .../Avalonia.DesignerSupport.csproj | 1 + .../Remote/HtmlTransport/HtmlTransport.cs | 14 ++------------ src/Shared/EnumParserHelper.cs | 19 +++++++++++++++++++ 6 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 src/Shared/EnumParserHelper.cs diff --git a/Avalonia.sln b/Avalonia.sln index 8e94eb4e63..1f59a94e2e 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -38,8 +38,8 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A689DEF5-D50F-4975-8B72-124C9EB54066}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig + src\Shared\EnumParserHelper.cs = src\Shared\EnumParserHelper.cs src\Shared\ModuleInitializer.cs = src\Shared\ModuleInitializer.cs - src\Shared\RawEventGrouping.cs = src\Shared\RawEventGrouping.cs src\Shared\SourceGeneratorAttributes.cs = src\Shared\SourceGeneratorAttributes.cs EndProjectSection EndProject diff --git a/src/Avalonia.Base/Avalonia.Base.csproj b/src/Avalonia.Base/Avalonia.Base.csproj index 8e4755b4b7..f0d54d831a 100644 --- a/src/Avalonia.Base/Avalonia.Base.csproj +++ b/src/Avalonia.Base/Avalonia.Base.csproj @@ -7,6 +7,7 @@ + diff --git a/src/Avalonia.Base/Input/KeyGesture.cs b/src/Avalonia.Base/Input/KeyGesture.cs index 6f302a3ae7..d7fe89afda 100644 --- a/src/Avalonia.Base/Input/KeyGesture.cs +++ b/src/Avalonia.Base/Input/KeyGesture.cs @@ -155,11 +155,7 @@ namespace Avalonia.Input if (s_keySynonyms.TryGetValue(key.ToLower(), out Key rv)) return rv; -#if NETSTANDARD2_0 - return (Key)Enum.Parse(typeof(Key), key, true); -#else - return Enum.Parse(key, true); -#endif + return EnumParserHelper.ParseEnum(key, true); } private static KeyModifiers ParseModifier(ReadOnlySpan modifier) @@ -176,11 +172,7 @@ namespace Avalonia.Input return KeyModifiers.Meta; } -#if NETSTANDARD2_0 - return (KeyModifiers)Enum.Parse(typeof(KeyModifiers), modifier.ToString(), true); -#else - return Enum.Parse(modifier.ToString(), true); -#endif + return EnumParserHelper.ParseEnum(modifier.ToString(), true); } private Key ResolveNumPadOperationKey(Key key) diff --git a/src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj b/src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj index 0270000d8c..66a7a6389e 100644 --- a/src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj +++ b/src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj @@ -19,6 +19,7 @@ + diff --git a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs index 7965e5d0d8..11a1efb9c7 100644 --- a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs +++ b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs @@ -320,23 +320,13 @@ namespace Avalonia.DesignerSupport.Remote.HtmlTransport ? null : modifiersText .Split(',') -#if NETSTANDARD2_0 - .Select(x => (InputProtocol.InputModifiers)Enum.Parse( - typeof(InputProtocol.InputModifiers), x, true)) -#else - .Select(x => Enum.Parse(x, true)) -#endif + .Select(x => EnumParserHelper.ParseEnum(x, true)) .ToArray(); private static InputProtocol.MouseButton ParseMouseButton(string buttonText) => string.IsNullOrWhiteSpace(buttonText) ? InputProtocol.MouseButton.None -#if NETSTANDARD2_0 - : (InputProtocol.MouseButton)Enum.Parse( - typeof(InputProtocol.MouseButton), buttonText, true); -#else - : Enum.Parse(buttonText, true); -#endif + : EnumParserHelper.ParseEnum(buttonText, true); private static double ParseDouble(string text) => double.Parse(text, NumberStyles.Float, CultureInfo.InvariantCulture); diff --git a/src/Shared/EnumParserHelper.cs b/src/Shared/EnumParserHelper.cs new file mode 100644 index 0000000000..09d6a0cb7d --- /dev/null +++ b/src/Shared/EnumParserHelper.cs @@ -0,0 +1,19 @@ +using System; + +namespace Avalonia +{ + internal class EnumParserHelper + { +#if NET6_0 + public static T ParseEnum(ReadOnlySpan key, bool ignoreCase) where T : struct + { + return Enum.Parse(key, ignoreCase); + } +#else + public static T ParseEnum(string key, bool ignoreCase) where T : struct + { + return (T)Enum.Parse(typeof(T), key, ignoreCase); + } +#endif + } +}