首页 > 代码库 > OSS.Common获取枚举字典列表标准库支持
OSS.Common获取枚举字典列表标准库支持
介绍了OSS.Common的标准库支持扩展,也列举了可能遇到问题的解决方案。由于时间有限,同时.net standard暂时还没有提供对DescriptionAttribute的支持,所以其中的转化枚举到字典列表的扩展当时按照第一种处理方式先行屏蔽,这次按照第三种方式完善一下。
既然.net standard 下没有提供对DescriptAttribute的支持,首先我先自定义一个Attribute来补充:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] public class OSDescriptAttribute : Attribute { public OSDescriptAttribute(string description) { this.Description = description; } public string Description { get; set; } }
其次定义一个线程安全的字典,来全局缓存枚举对应的枚举字典列表,减少下次获取的代码执行:
private static ConcurrentDictionary<string, Dictionary<string, string>> enumDirs =new ConcurrentDictionary<string, Dictionary<string, string>>();
最后我们来实现获取字典部分的具体操作:
public static Dictionary<string, string> ToEnumDirs(this Type enType, bool isIntValue = http://www.mamicode.com/true)"获取枚举字典,参数必须是枚举类型!"); string key = string.Concat(enType.FullName, isIntValue); Dictionary<string, string> dirs; enumDirs.TryGetValue(key, out dirs); if (dirs != null) return dirs.Copy(); dirs = new Dictionary<string, string>(); var values = Enum.GetValues(enType); foreach (var value in values) { var name = Enum.GetName(enType, value); string resultValue = http://www.mamicode.com/isIntValue ? ((int) value).ToString() : value.ToString();>
以后我们就可以在所有的业务的代码中进行 typeof(枚举类型).ToEnumDirs() 的方法来获取枚举对应的字典列表,例如:
typeof (ResultTypes).ToEnumDirs();
OSS.Common获取枚举字典列表标准库支持
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。