比较有用的枚举方法

本文介绍了一个用于将驼峰命名法转换为句子的方法,并提供了一个获取枚举值描述的实用工具。通过这些工具可以更好地管理和展示代码中的枚举和变量命名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值