当前位置: 首页 > news >正文

比较有用的枚举方法

/// <summary>
/// 将骆驼命名法的单词转为句子. 如NotSent-->Not Sent
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static String ConvertCamelToSentence(string str)
{
if (string.IsNullOrEmpty(str)) { return str; }
str = str.Trim();
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < str.Length; i++)
{
string s = str.Substring(i, 1);
if (s[0] >= 'a' && s[0] <= 'z'){
sb.Append(s);
}else
{
sb.Append(" "+s);
}
}
return sb.ToString().Trim();
}

public static String GetEnumString(Type e) {
return Enum.GetName(e, 1);
}


/// <summary>
/// 得到某一枚举的值对应的描述/定义字符串
/// 如: [Description("Sent Failed")]
/// Failed=-1,
/// 即得到 value:-1, desc:Sent Failed (如没有定义Description, 将得到Failed)
/// </summary>
/// <param name="enumType">枚举类型</param>
/// <param name="enumValue">枚举的值,object类型只是避免转换,其实只能是int类型</param>
/// <returns></returns>
public static String GetEnumDescByValue(Type enumType, object enumValue) {
NameValueCollection nvc = GetNVCFromEnumValue(enumType);
foreach (string s in nvc.AllKeys)
{
if (nvc[s] == enumValue.ToString())
return s;
}
return null;
}

/// 从枚举类型和它的特性读出并返回一个键值对
/// Type,该参数的格式为typeof(需要读的枚举 类型)
/// 键值对
public static NameValueCollection GetNVCFromEnumValue(Type enumType)
{
NameValueCollection nvc = new NameValueCollection();
Type typeDescription = typeof(DescriptionAttribute);
System.Reflection.FieldInfo[] fields = enumType.GetFields();
string strText = string.Empty;
string strValue = string.Empty;
foreach (FieldInfo field in fields)
{
if (field.FieldType.IsEnum)
{
strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();
object[] arr = field.GetCustomAttributes(typeDescription, true);
if (arr.Length > 0)
{
DescriptionAttribute aa = (DescriptionAttribute)arr[0];
strText = aa.Description;
}
else
{
strText = field.Name;
}
nvc.Add(strText, strValue);
}
}
return nvc;
}

相关文章:

  • 长训总结
  • 地形编辑工具
  • 怎么在企业管理器中得到执行一个select语句的毫秒级时间
  • Wireshark抓包过滤
  • 关于Remoting的个人使用心得
  • 工作不顺心怎么办?——Leo网上答疑(57)
  • 操作系统版本
  • SQL中 NVARCHAR 和 VARCHAR 两者之间的优势与劣势
  • 学习进度条-第四周
  • OEM界面乱码
  • HTTP简介
  • proc 动态游标前3种方式的使用(第四种就是sqlda方式)
  • CCF 201609-4 交通规划
  • 奇妙的排序规则COLLATE
  • 安卓设置默认首先启动Activity
  • 【css3】浏览器内核及其兼容性
  • Computed property XXX was assigned to but it has no setter
  • django开发-定时任务的使用
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Lsb图片隐写
  • Sass Day-01
  • Spring-boot 启动时碰到的错误
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 关于字符编码你应该知道的事情
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 入门级的git使用指北
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 用Canvas画一棵二叉树
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (pojstep1.3.1)1017(构造法模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (利用IDEA+Maven)定制属于自己的jar包
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)大型网站的系统架构
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)项目管理杂谈-我所期望的新人
  • (转)一些感悟
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .apk文件,IIS不支持下载解决
  • .NET CLR Hosting 简介
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET构架之我见
  • @Valid和@NotNull字段校验使用
  • [20180129]bash显示path环境变量.txt
  • [ai笔记9] openAI Sora技术文档引用文献汇总