C# 获取枚举类型中所有描述信息
今天心情好;回家没什么事干;于是就坐下来写点代码打发无聊的时间;一时也不知道写点什么好呢?于是想到了最近上班经常用的获取枚举类型中的所有属性的描述信息;所以就给自己一个温故而知新的机会。本人作者作为菜鸟军团中的一员。没有多大思想与见解,所以难免发一点没多大意义的文章;希望各位谅解。
1.应用的命名空间
using System.ComponentModel;
using System.Reflection;
2、定义枚举类

1 public enum BagType 2 { 3 [Description("书包1")] 4 schoolbag1, 5 6 [Description("书包2")] 7 schoolbag2, 8 9 [Description("书包3")] 10 schoolbag3 11 }
1 public enum BagType 2 { 3 [Description("书包1")] 4 schoolbag1, 5 6 [Description("书包2")] 7 schoolbag2, 8 9 [Description("书包3")] 10 schoolbag3 11 }
3、获取枚举类所有属性的描述信息

1 public void GetEnumDesc<Ttype>(Ttype Enumtype) 2 { 3 if (Enumtype == null) throw new ArgumentNullException("Enumtype"); 4 if (!Enumtype.GetType().IsEnum) throw new Exception("参数类型不正确"); 5 6 FieldInfo[] fieldinfo = Enumtype.GetType().GetFields(); 7 foreach (FieldInfo item in fieldinfo) 8 { 9 Object[] obj = item.GetCustomAttributes(typeof(DescriptionAttribute), false); 10 if (obj != null&&obj.Length!=0) 11 { 12 DescriptionAttribute des = (DescriptionAttribute)obj[0]; 13 Console.WriteLine(des.Description); 14 } 15 } 16 }
1 public void GetEnumDesc<Ttype>(Ttype Enumtype) 2 { 3 if (Enumtype == null) throw new ArgumentNullException("Enumtype"); 4 if (!Enumtype.GetType().IsEnum) throw new Exception("参数类型不正确"); 5 6 FieldInfo[] fieldinfo = Enumtype.GetType().GetFields(); 7 foreach (FieldInfo item in fieldinfo) 8 { 9 Object[] obj = item.GetCustomAttributes(typeof(DescriptionAttribute), false); 10 if (obj != null&&obj.Length!=0) 11 { 12 DescriptionAttribute des = (DescriptionAttribute)obj[0]; 13 Console.WriteLine(des.Description); 14 } 15 } 16 }
4、知识总结:
4.1熟悉FieldInfo的用法和属性(发现字段特性并提供对字段员数据的访问权)
4.2理解C#泛型的应用
这个方法如果大家在项目当中扩展的好可以起到一定的举足轻重的作用。如果有什么建议的同仁;希望多多指点;感激不尽;您的指点让我又进步了一点。
demo地址:http://xueduany.github.com/KitJs/KitJs/index.html#bubble
号外:kitjs官方讨论QQ群建立了,QQ群号88093625,欢迎大家加入,讨论前端相关话题
最近做手机项目时候,需要实现一个类似iphone SMS效果的气泡效果。
这里分享下实现心得,
首先分析下iphone的气泡效果有一下特点
1. 圆角
2. 向下的外阴影
3. 上边和下边的内阴影
4. 上边内的一个内嵌的玻璃气泡的反光效果
首先定义一个容器,盒模型为display: inline-block,方便自适应文字大小
.bubble {
position: relative;
display: inline-block;
min- 30px;
max- 200px;
word-break: break-all;
word-wrap: break-word;
min-height: 22px;
background: #d2d2d2;
border-radius: 15px;
margin-bottom: 20px;
padding: 6px 8px;
-webkit-box-shadow: 0px 1px 2px #000, inset 0px 4px 4px rgba(0,0,0,.3), inset 0px -4px 4px rgba(255,255,255,.5);
-moz-shadow: 0px 1px 2px #000, inset 0px 4px 4px rgba(0,0,0,.3), inset 0px -4px 4px rgba(255,255,255,.5);
box-shadow: 0px 1px 2px #000, inset 0px 4px 4px rgba(0,0,0,.3), inset 0px -4px 4px rgba(255,255,255,.5);
}
设置断词,避免文字过长,撑开容器,同时设置最小宽度,最大宽度
设置圆角,border-radius
设置box-shadow: 0px 1px 2px #000实现气泡的外阴影
inset 0px 4px 4px rgba(0,0,0,.3)为上边框内阴影
inset 0px -4px 4px rgba(255,255,255,.5)为下边框的内阴影
接下来,我们需要实现最后一个效果内嵌玻璃气泡的反光效果
.bubble .content {
position: relative;
padding: 0 4px;
}
.bubble .content:before {
content: '';
position: absolute;
margin: auto;
top: -5px;
left: 0;
100%;
height: 12px;
background-image: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.2) 90%, rgba(255,255,255,0) 90% );
background-image: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.2) 90%, rgba(255,255,255,0) 90% );
border-radius: 10px
}
在气泡内嵌一个显示内容的block,使用block的before伪元素,实现一个圆角的渐变气泡
background-image: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.2) 90%, rgba(255,255,255,0) 90% );
最后,通过气泡的before和after伪元素,实现三角
.bubble:before {
content: '';
display: block;
font-size: 0;
0;
height: 0;
border- 6px;
position: absolute;
bottom: -12px;
left: 12px;
border-color: #4a4c50 transparent transparent #4a4c50;
border-style: solid dashed dashed solid;
}
.bubble:after {
content: '';
display: block;
font-size: 0;
position: absolute;
bottom: -9px;
left: 13px;
0;
height: 0;
border- 5px;
border-color: #e8e8e8 transparent transparent #e8e8e8;
border-style: solid dashed dashed solid;
}
最终效果图: