首页 新闻 会员 周边 捐助

如何利用反射获取枚举成员的attribute值

0
悬赏园豆:10 [已解决问题] 解决于 2010-08-08 17:22

如下一个枚举:

1 /// <summary>
2 /// 交通方式
3 /// </summary>
4 public enum TransportType
5 {
6 [Img("/images/Airplane.jpg")]
7 飞机=1,
8 [Img("/images/Car.jpg")]
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 }
Img是自定义Attribute,请问如何获得比如TransportType.汽车上的Img特性值?

请哪位大侠详细介绍下。

iQingHan的主页 iQingHan | 初学一级 | 园豆:19
提问于:2010-08-07 20:24
< >
分享
最佳答案
1

通过一下途径可以看到:


        static void Main(string[] args)
        {
            bool isUsed = false;
            Type t = typeof(TransportType);

            //获取所有的字段信息
            FieldInfo[] f = t.GetFields();

            //遍历每个字段;
            for (int i = 0; i < f.Length; i++)
            {

     //获取每个字段上所有的 Attribute
                var attr = f[i].GetCustomAttributes(false);


     //查看每个字段上应用的所有Attribute
                foreach (Attribute a in attr)
                {
                    //判断Attribute 中是否 为 ImgAttribute
                    if (a is ImgAttribute)
                    {
                        isUsed = true;
                    }
                }
            }

            Console.Read();
        }

收获园豆:5
HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-07 23:45
感谢
iQingHan | 园豆:19 (初学一级) | 2010-08-08 17:20
其他回答(2)
0

可以看下老赵写的:一个利用扩展方法的实例:AttachDataExtensions

这篇文章提出了一种更好更直观的方法来获取及管理枚举的attribute

收获园豆:5
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-08 10:18
这方法不错,要好好学下,可惜现在用不上,项目是.net2.0的。 感谢!
支持(0) 反对(0) iQingHan | 园豆:19 (初学一级) | 2010-08-08 17:22
0

不错,学习了

kuangkro | 园豆:241 (菜鸟二级) | 2012-07-06 17:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册