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     }


  • 相关阅读:
    Hadoop-HA配置详细步骤
    Oracle 事务
    2 Oracle用户和表空间
    oracle 客户端监听文件配置
    Django 关联管理器
    第2讲 | 网络分层的真实含义是什么?
    hihoCoder #1151 : 骨牌覆盖问题·二 (矩阵快速幂,DP)
    poj 2411 Mondriaan's Dream (轮廓线DP)
    SPOJ COT2 Count on a tree II (树上莫队,倍增算法求LCA)
    HYSBZ 1086 王室联邦 (树的分块)
  • 原文地址:https://www.cnblogs.com/jasonoiu/p/1795362.html
Copyright © 2011-2022 走看看