【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、测试结果

 

 

posted @ 2022-08-22 14:42  狼窝窝  阅读(55)  评论(0)    收藏  举报