【C#】利用特性,创建获取描述信息的扩展方法
原理:
利用反射、特性、扩展方法来处理
1、增加特性类
[AttributeUsage(AttributeTargets.All)] public class DescriptionAttribute:Attribute { //enum的描述信息 public string _Description; public DescriptionAttribute(string description) { this._Description = description; } }
2、增加使用类
enum EnumStatus { [Description("手机号长度不够")] PhoneLengthNotEngouth=20001, [Description("字符串超出定义范围")] StringLengthOutofIndex =20002, [Description("邮箱格式错误")] EmailFormatIsError =20003, [Description("字段不能为空")] FieldIsNotNull =20004 }
3、编写扩展方法,实现获取描述信息方法
public static class DiscriptionExtend { //获取扩展方法(得到限定描述信息) public static string GetDiscription<T>(this T t) { Type type = t.GetType(); FieldInfo fd = type.GetField(t.ToString()); if (fd.IsDefined(typeof(DescriptionAttribute), true)) { DescriptionAttribute enumStatusAttribute = fd.GetCustomAttribute(typeof(DescriptionAttribute), true) as DescriptionAttribute; return enumStatusAttribute._Description; } else return t.ToString(); } }
4、调用测试
//获取字段上特性的描述信息【Discription扩展方法】 EnumStatus enumStatus = EnumStatus.PhoneLengthNotEngouth; Console.WriteLine(enumStatus.GetDiscription());
5、测试结果