zoukankan      html  css  js  c++  java
  • 使用反射获取枚举的自定义属性Attribute

    自定义Attribue:ImgAttribute

     1 [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
     2 sealed class ImgAttribute : Attribute
     3 {
     4     readonly string imgUrl;
     5 
     6     public  ImgAttribute(string imgUrl)
     7     {
     8         this.imgUrl = imgUrl;
     9     }
    10     /// <summary>
    11     /// 图片地址
    12     /// </summary>
    13     public string ImgUrl
    14     {
    15         get { return imgUrl; }
    16     }
    17 }

    使用此属性的枚举:

     1 /// <summary>
     2 /// 交通方式
     3 /// </summary>
     4 public enum TransportType
     5 {
     6     [Img("/images/Airplane.jpg")]
     7     飞机=1,
     8     [Img("/images/bus.gif")]
     9     汽车=2,
    10     [Img("/images/Train.jpg")]
    11     火车=3,
    12     [Img("/images/Ship.jpg")]
    13     轮船=4,
    14     [Img("/images/Foot.jpg")]
    15     步行=5,
    16     [Img("/images/Bike.jpg")]
    17     自行车=6
    18 }

    使用反射获取属性值:

     1     /// <summary>
     2     /// 获取交通方式枚举的属性值(交通方式的图片地址)
     3     /// </summary>
     4     /// <param name="ttype"></param>
     5     /// <returns></returns>
     6     public static object getAttribute(TransportType ttype)
     7     {
     8         Type t = typeof(TransportType);
     9         FieldInfo[] info = t.GetFields();
    10         for (int i = 0; i < info.Length; i++)
    11         {
    12             if (info[i].Name == ttype.ToString())
    13             {
    14                 var att = info[i].GetCustomAttributes(false);
    15                 foreach (Attribute a in att)
    16                 {
    17                     if (a is ImgAttribute)
    18                     {
    19                         return ((ImgAttribute)a).ImgUrl;
    20                     }
    21                 }
    22                 break;
    23             }
    24         }
    25         return null;
    26     }


  • 相关阅读:
    分享一组很赞的 jQuery 特效【附源码下载】
    HTML5 Canvas 实现的9个 Loading 效果
    Charted – 自动化的可视化数据生成工具
    jQuery Countdown Timer 倒计时效果
    Droidicon – 1600+ 漂亮的 Android 图标
    tiltShift.js
    推荐12个最好的 JavaScript 图形绘制库
    Elastic Image Slider 带缩略图功能的幻灯片
    12款高质量的响应式 HTML5/CSS3 网站模板
    7种鼠标悬停效果,多样的图片说明展示
  • 原文地址:https://www.cnblogs.com/jasonoiu/p/1795362.html
Copyright © 2011-2022 走看看