.NET小结
目录
1、使用的枚举的好处
- 可减少由数字转置或键入错误引起的错误。
- 以后更改值很容易。
- 使代码更易读,这意味着代码中发生错误的概率降低。
- 确保向前兼容性。使用枚举可减少将来有人更改与成员名称对应的值时代码出错的概率。
2、举个栗子
// 新建枚举类
public enum TestEnum
{
[Description("洋文")]
Tomato = 1,
[Description("中文")]
番茄 = 2
}
// 新建枚举扩展字段
public class TestResultModel
{
internal TestEnum TestEnum { get; set; }
internal string TestEnumStr { get { return EnumEx.EnumGetDescription(TestEnum); } }
}
internal class Program
{
private static void Main(string[] args)
{
string AAA = EnumEx.EnumGetDescription(TestEnum.Tomato); // 洋文
string BBB = EnumEx.GetValueByKey<TestEnum>(TestEnum.Tomato, 2); // 番茄
string CCC = TestEnum.Tomato.ToString(); // Tomato
int DDD = (int)TestEnum.Tomato; //1
TestResultModel testResultModel = new TestResultModel()
{
TestEnum = TestEnum.Tomato
};
}
}
3、工具类
public static class EnumEx
{
public static string GetValueByKey<TEnum>(this Enum myenum, int key) where TEnum : struct
{
Enum.TryParse(key.ToString(), out TEnum result);
return result.ToString();
} /// <summary>
/// 根据枚举值获取枚举描述
/// </summary>
/// <param name="value">枚举值</param>
/// <returns>描述字符串</returns>
public static string EnumGetDescription(this Enum value)
{
System.Reflection.FieldInfo fi = value.GetType().GetField(value.ToString());
if (fi != null)
{
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false); //获取描述的集合
return attributes.Length > 0 ? attributes[0].Description : value.ToString(); //存在取第一个,不存在返回Name
}
return "";
}
/// <summary>
/// 获取根据枚举名称获取枚举描述
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="enumName">枚举名称</param>
/// <returns></returns>
public static string EnumGetDescription<T>(this string enumName)
{
System.Reflection.FieldInfo fi = typeof(T).GetField(enumName);
if (fi != null)
{
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : enumName;
}
return "";
}