From 11141f7e1bb92f6599a147c4a6e14b78dcae5eed Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 5 Sep 2023 15:47:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E6=98=A0=E5=B0=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/GenericEnumDicionary.cs | 35 +++++++++++++++++++ .../Mapper/Mapper.cs | 3 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs new file mode 100644 index 00000000..c8183b00 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Extension; +using Spire.Pdf.Widget; +using Tnb.WarehouseMgr.Entities.Enums; + +namespace Tnb.WarehouseMgr.Entities.Consts +{ + + public class GenericEnumDicionary where T : Enum + { + private static string tn = typeof(T).Name; + private static ConcurrentDictionary> enumDescMap = new(); + private static ConcurrentDictionary enumMemberMap = new(); + + static GenericEnumDicionary() + { + enumMemberMap.GetOrAdd(tn, f => typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static)); + if (enumMemberMap[tn]?.All(f => f.GetCustomAttribute() != null) ?? false) + { + enumDescMap.GetOrAdd(tn, dic => typeof(T).GetEnumDescDictionary()); + } + } + public static string GetEnumDesc(int enumVal) + { + return enumDescMap.ContainsKey(tn) ? enumDescMap[tn]?[enumVal] ?? string.Empty : string.Empty; + } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs index 1deef1ac..832fb911 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs @@ -6,6 +6,7 @@ using Tnb.WarehouseMgr.Entities.Dto.Outputs; using Tnb.Common; using JNPF.Common.Extension; using Tnb.WarehouseMgr.Entities.Enums; +using Tnb.WarehouseMgr.Entities.Consts; namespace Tnb.WarehouseMgr.Entities.Mapper { @@ -23,7 +24,7 @@ namespace Tnb.WarehouseMgr.Entities.Mapper config.ForType() .Map(dest => dest.qc_status, src => src.is_check == 0 ? "不合格" : "合格"); config.ForType() - .Map(dest => dest.check_conclusion, src => src.check_conclusion.ToEnum().GetDescription()); + .Map(dest => dest.check_conclusion, src => GenericEnumDicionary.GetEnumDesc(src.check_conclusion)); } } } \ No newline at end of file