/// <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;
}
比较有用的枚举方法
最新推荐文章于 2024-06-07 22:57:27 发布