From f2444b3048ddf3d67233155963fcde689e3ee0a0 Mon Sep 17 00:00:00 2001 From: tk Date: Mon, 27 Feb 2023 11:03:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20enum=E3=80=81string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NSExt.Tests/NSExt.Tests.csproj | 2 +- src/NSExt.Tests/TestCase.cs | 4 ++-- src/NSExt/Extensions/EnumExtensions.cs | 19 +++++++++++++++++++ src/NSExt/Extensions/StringExtensions.cs | 19 +++++++++++++++++++ src/NSExt/NSExt.csproj | 2 +- 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/NSExt.Tests/NSExt.Tests.csproj b/src/NSExt.Tests/NSExt.Tests.csproj index 4c93043..0fc2eab 100644 --- a/src/NSExt.Tests/NSExt.Tests.csproj +++ b/src/NSExt.Tests/NSExt.Tests.csproj @@ -1,6 +1,6 @@ - + diff --git a/src/NSExt.Tests/TestCase.cs b/src/NSExt.Tests/TestCase.cs index 66f78ea..dadfcdc 100644 --- a/src/NSExt.Tests/TestCase.cs +++ b/src/NSExt.Tests/TestCase.cs @@ -17,7 +17,7 @@ public class TestCase _testOutputHelper = testOutputHelper; } - public enum MyEnum + public enum MyEnum1 { [ResourceDescription(nameof(Description))] Online = 1 @@ -33,7 +33,7 @@ public class TestCase [Fact] public void Case1() { - var test = MyEnum.Online.ResDesc(); + var test = MyEnum1.Online.ResDesc(); _testOutputHelper.WriteLine(test); Assert.True(test is not null); diff --git a/src/NSExt/Extensions/EnumExtensions.cs b/src/NSExt/Extensions/EnumExtensions.cs index bd1db89..d33f5b5 100644 --- a/src/NSExt/Extensions/EnumExtensions.cs +++ b/src/NSExt/Extensions/EnumExtensions.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations; using System.Reflection; using NSExt.Attributes; @@ -13,6 +14,7 @@ public static class EnumExtensions /// /// 枚举对象 /// description属性 + [Obsolete(nameof(ResDesc))] public static string Desc(this Enum e) { var typeOfEnum = e.GetType(); @@ -27,6 +29,23 @@ public static class EnumExtensions return locAttr is null ? str : locAttr.ResourceClass.GetProperty(str)?.GetValue(default) as string ?? str; } + /// + /// 通过类泛型类型获取特性 + /// + public static T GetAttributeOfType(this Enum me) + where T : Attribute + { + return me.GetType().GetMember(me.ToString()).First().GetCustomAttributes(false).FirstOrDefault(); + } + + /// + /// 获取显示特性 + /// + public static DisplayAttribute GetDisplay(this Enum me) + { + return me.GetAttributeOfType(); + } + /// /// 获取枚举的本地化资源描述 /// diff --git a/src/NSExt/Extensions/StringExtensions.cs b/src/NSExt/Extensions/StringExtensions.cs index 7c3d583..ea9c1a1 100644 --- a/src/NSExt/Extensions/StringExtensions.cs +++ b/src/NSExt/Extensions/StringExtensions.cs @@ -495,6 +495,25 @@ public static class StringExtensions return $"
{me}
"; } + /// + /// 首字母小写 + /// + public static string ToLowerCamelCase(this string me) + { + return string.IsNullOrWhiteSpace(me) + ? me + : string.Concat( // + me[0].ToString(CultureInfo.InvariantCulture).ToLowerInvariant(), me.AsSpan(1)); + } + + /// + /// 首字母大写 + /// + public static string ToUpperCamelCase(this string me) + { + return string.IsNullOrWhiteSpace(me) ? me : string.Concat(me[0].ToString().ToUpperInvariant(), me.AsSpan(1)); + } + /// /// 将连续多个空格替换成一个空格 /// diff --git a/src/NSExt/NSExt.csproj b/src/NSExt/NSExt.csproj index b5a1ed7..b13a53b 100644 --- a/src/NSExt/NSExt.csproj +++ b/src/NSExt/NSExt.csproj @@ -24,7 +24,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive