OSS.Common获取枚举字典列表标准库支持

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,标准 - 同城冗余存储 20GB 3个月
简介:

既然.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 = true)
        {#if NETFW            if (!enType.IsEnum)#else
            if (!enType.GetTypeInfo().IsEnum)#endif
                throw new ArgumentException("获取枚举字典,参数必须是枚举类型!");            
            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 = isIntValue ? ((int) value).ToString() : value.ToString();#if NETFW                var attr = enType.GetField(name)?.GetCustomAttribute<OSDescriptAttribute>();#else
                var attr = enType.GetTypeInfo().GetDeclaredField(name)?.GetCustomAttribute<OSDescriptAttribute>();#endif
                dirs.Add(resultValue, attr == null ? name : attr.Description);
            }
            enumDirs.TryAdd(key, dirs);            return dirs.Copy();
        }

 

以后我们就可以在所有的业务的代码中进行  typeof(枚举类型).ToEnumDirs()  的方法来获取枚举对应的字典列表,例如:

typeof (ResultTypes).ToEnumDirs();















本文转自xsster51CTO博客,原文链接http://blog.51cto.com/12945177/1929791: ,如需转载请自行联系原作者



相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
838 1
|
机器学习/深度学习 对象存储 API
将OSS里的 Stable diffusion 模型库挂载到PAI-EAS并部署推理
本文将会介绍如何一键转存模型库到自己的对象存储OSS空间中,并给出将OSS挂载到PAI-EAS实现部署,并对模型进行灵活切换与推理。
2261 1
将OSS里的 Stable diffusion 模型库挂载到PAI-EAS并部署推理
|
物联网 对象存储
如何将个人OSS里的Stable Diffusion模型库挂载到PAI-EAS
本文讲述如何将自己对象存储OSS里的Stable Diffusion文件挂载到PAI-EAS,实现模型的加载和推理训练
754 17
|
存储 机器学习/深度学习 分布式计算
热门Stable Diffusion模型库快速转存至个人OSS与加载训练
本实验介绍如何使用阿里云在线迁移服务,将热门模型库从国内镜像站点转存到个人对象存储OSS空间,并且可将OSS Bucket里的模型挂载到FC函数计算或PAI平台进行推理和训练。
|
前端开发 JavaScript 数据处理
更好的oss,obs对象处理库
obs,oss图片裁切库。对象处理,数据处理,url处理,链式调用。用户上传的图片长宽比例往往是不固定的,但是我们显示的区域又是固定的,或者上传了一个100 * 100 的图片,实际体积却有5M,所以需要我们对图片进行处理,一方面,可以避免图片变形,另一方面,可以加快图片加载速度。
731 0
|
设计模式 前端开发 测试技术
软件测试面试题:如何在项目中构建对象存储库?
软件测试面试题:如何在项目中构建对象存储库?
195 0
|
1月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
3月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
3月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。

热门文章

最新文章