diff --git a/AyCode.Core.Server/AyCode.Core.Server.csproj b/AyCode.Core.Server/AyCode.Core.Server.csproj
index be8372c..e6667b7 100644
--- a/AyCode.Core.Server/AyCode.Core.Server.csproj
+++ b/AyCode.Core.Server/AyCode.Core.Server.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj b/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
index 72c7735..d7713b9 100644
--- a/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
+++ b/AyCode.Core.Tests.Internal/AyCode.Core.Tests.Internal.csproj
@@ -16,10 +16,10 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
diff --git a/AyCode.Core.Tests/AyCode.Core.Tests.csproj b/AyCode.Core.Tests/AyCode.Core.Tests.csproj
index 8a35ab1..d650573 100644
--- a/AyCode.Core.Tests/AyCode.Core.Tests.csproj
+++ b/AyCode.Core.Tests/AyCode.Core.Tests.csproj
@@ -12,10 +12,10 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/AyCode.Core/AyCode.Core.csproj b/AyCode.Core/AyCode.Core.csproj
index e957185..b574cc3 100644
--- a/AyCode.Core/AyCode.Core.csproj
+++ b/AyCode.Core/AyCode.Core.csproj
@@ -13,9 +13,9 @@
-
+
-
+
diff --git a/AyCode.Core/Extensions/EnumExtensions.cs b/AyCode.Core/Extensions/EnumExtensions.cs
new file mode 100644
index 0000000..bb1fed4
--- /dev/null
+++ b/AyCode.Core/Extensions/EnumExtensions.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AyCode.Core.Extensions
+{
+ public static class EnumExtensions
+ {
+ private static readonly ConcurrentDictionary> DisplayNameCache = new();
+
+ private static T? GetAttributeOfType(this Enum enumValue) where T : Attribute
+ {
+ var type = enumValue.GetType();
+ var memInfo = type.GetField(enumValue.ToString(), BindingFlags.Public | BindingFlags.Static);
+
+ if (memInfo == null) return null;
+
+ var attributes = memInfo.GetCustomAttributes(false);
+ return attributes.FirstOrDefault();
+ }
+
+ //public static string GetDisplayValuesName(this Enum enumValue)
+ //=> DisplayNameCache[enumValue]
+
+ public static string GetDisplayName2(this T enumValue) where T : class
+ {
+ return string.Empty;
+ //return GetDisplayAttribute(enumValue).Name!;
+ }
+
+ public static string GetDisplayName(this Enum enumValue)
+ {
+ return GetDisplayAttribute(enumValue).Name!;
+ }
+
+ public static DisplayAttribute GetDisplayAttribute(this Enum enumValue)
+ {
+ return new DisplayAttribute();
+ //return DisplayNameCache.GetOrAdd(enumValue, e =>
+ //{
+ // var displayAttribute = e.GetAttributeOfType();
+ // if (displayAttribute != null) return displayAttribute;
+
+ // var name = e.ToString();
+ // return new DisplayAttribute { Name = name, ShortName = name, Prompt = name, Description = name };
+ //});
+ }
+ }
+}
+
diff --git a/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj b/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
index d528311..34e2e86 100644
--- a/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
+++ b/AyCode.Database.Tests.Internal/AyCode.Database.Tests.Internal.csproj
@@ -26,10 +26,10 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
diff --git a/AyCode.Database.Tests/AyCode.Database.Tests.csproj b/AyCode.Database.Tests/AyCode.Database.Tests.csproj
index 2b3b3c7..ee14273 100644
--- a/AyCode.Database.Tests/AyCode.Database.Tests.csproj
+++ b/AyCode.Database.Tests/AyCode.Database.Tests.csproj
@@ -11,12 +11,12 @@
-
+
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/AyCode.Database/AyCode.Database.csproj b/AyCode.Database/AyCode.Database.csproj
index 2c882f3..c9ddc03 100644
--- a/AyCode.Database/AyCode.Database.csproj
+++ b/AyCode.Database/AyCode.Database.csproj
@@ -8,11 +8,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/AyCode.Entities.Server/AyCode.Entities.Server.csproj b/AyCode.Entities.Server/AyCode.Entities.Server.csproj
index 75b6138..1670558 100644
--- a/AyCode.Entities.Server/AyCode.Entities.Server.csproj
+++ b/AyCode.Entities.Server/AyCode.Entities.Server.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/AyCode.Entities/AyCode.Entities.csproj b/AyCode.Entities/AyCode.Entities.csproj
index 7c00a13..cdf86bc 100644
--- a/AyCode.Entities/AyCode.Entities.csproj
+++ b/AyCode.Entities/AyCode.Entities.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/AyCode.Services.Server.Tests/AyCode.Services.Server.Tests.csproj b/AyCode.Services.Server.Tests/AyCode.Services.Server.Tests.csproj
index c5d75ec..cbc8670 100644
--- a/AyCode.Services.Server.Tests/AyCode.Services.Server.Tests.csproj
+++ b/AyCode.Services.Server.Tests/AyCode.Services.Server.Tests.csproj
@@ -15,12 +15,12 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
-
-
-
+
+
+
+
diff --git a/AyCode.Services.Server/AyCode.Services.Server.csproj b/AyCode.Services.Server/AyCode.Services.Server.csproj
index f8e20d7..3a1bffa 100644
--- a/AyCode.Services.Server/AyCode.Services.Server.csproj
+++ b/AyCode.Services.Server/AyCode.Services.Server.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/AyCode.Services/AyCode.Services.csproj b/AyCode.Services/AyCode.Services.csproj
index d68e19f..6db77fa 100644
--- a/AyCode.Services/AyCode.Services.csproj
+++ b/AyCode.Services/AyCode.Services.csproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/AyCode.Utils/AyCode.Utils.csproj b/AyCode.Utils/AyCode.Utils.csproj
index 9407071..1cbeeb2 100644
--- a/AyCode.Utils/AyCode.Utils.csproj
+++ b/AyCode.Utils/AyCode.Utils.csproj
@@ -9,7 +9,7 @@
-
+