Просмотр исходного кода

!1211 枚举拓展
Merge pull request !1211 from aquan/N/A

zuohuaijun 1 год назад
Родитель
Сommit
b819d06e0f

+ 47 - 0
Admin.NET/Admin.NET.Core/Attribute/ThemeAttribute

@@ -0,0 +1,47 @@
+
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core;
+
+/// <summary>
+/// 枚举拓展主题样式
+/// </summary>
+[SuppressSniffer]
+[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field)]
+public class ThemeAttribute: Attribute
+{
+    public ThemeAttribute(string theme)
+    {
+        this.Theme = theme;
+    }
+
+    public string Theme { get; private set; }
+}
+
+
+public static class ThemeExtend
+{
+    /// <summary>
+    /// 扩展方法
+    /// </summary>
+    /// <param name="enumValue"></param>
+    /// <returns></returns>
+    public static string GetTheme(this Enum enumValue)
+    {
+        Type type = enumValue.GetType();
+        FieldInfo field = type.GetField(enumValue.ToString());
+        if (field.IsDefined(typeof(ThemeAttribute), true))
+        {
+            var themeAttribute = (ThemeAttribute)field.GetCustomAttribute(typeof(ThemeAttribute));
+            return themeAttribute.Theme;
+        }
+        else
+        {
+            return string.Empty;
+        }
+    }
+}

+ 19 - 1
Admin.NET/Admin.NET.Core/Extension/EnumExtension.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
 //
@@ -166,6 +166,18 @@ public static class EnumExtension
             ?.GetCustomAttribute<DescriptionAttribute>()?.Description;
             ?.GetCustomAttribute<DescriptionAttribute>()?.Description;
     }
     }
 
 
+   /// <summary>
+   /// 获取枚举的Theme
+   /// </summary>
+   /// <param name="value"></param>
+   /// <returns></returns>
+   public static string GetTheme(this object value)
+   {
+       return value.GetType().GetMember(value.ToString() ?? string.Empty).FirstOrDefault()
+           ?.GetCustomAttribute<ThemeAttribute>()?.Theme;
+   }
+
+
     /// <summary>
     /// <summary>
     /// 将枚举转成枚举信息集合
     /// 将枚举转成枚举信息集合
     /// </summary>
     /// </summary>
@@ -183,6 +195,7 @@ public static class EnumExtension
             {
             {
                 Name = item.ToString(),
                 Name = item.ToString(),
                 Describe = item.GetDescription() ?? item.ToString(),
                 Describe = item.GetDescription() ?? item.ToString(),
+                Theme= item.GetTheme()?? string.Empty,
                 Value = item.GetHashCode()
                 Value = item.GetHashCode()
             };
             };
         }).ToList();
         }).ToList();
@@ -213,6 +226,11 @@ public class EnumEntity
     /// </summary>
     /// </summary>
     public string Describe { set; get; }
     public string Describe { set; get; }
 
 
+    /// <summary>
+    /// 枚举的样式
+    /// </summary>
+    public string Theme { set; get; }
+
     /// <summary>
     /// <summary>
     /// 枚举名称
     /// 枚举名称
     /// </summary>
     /// </summary>