700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C#特性——Description

C#特性——Description

时间:2019-03-28 16:11:05

相关推荐

C#特性——Description

一般来说,我们给枚举注释这样。

,写个/// <summary> 加中文注释,然后鼠标悬浮即可看到注释。

但是如何用代码获取到这个注释。

这就用到Description特性,原理不知道,我也刚学,先学会用吧。

先写个枚举

/// <summary>/// 季节/// </summary>public enum Season{[Description("春天,又称春季,是四季中的第一个季节,指立春至立夏期间,含节气有立春、雨水、惊蛰、春分、清明、谷雨。是万物复苏的季节。")]Spring = 1,[Description("夏天,四季中的第二个季节,英语为summer,又称“昊天”,是北半球一年中最热的季节,我国习惯将立夏作为夏天的开始,气象学上的夏季要推迟到立夏后25天左右")]Summer = 2,[Description("秋天,又称秋季,一年四季的第三季,由夏季到冬季的过渡季,北半球为9至11月,南半球为3至5月,天文为秋分到冬至。")]Autumn = 3,[Description("冬天,又称冬季。北半球一年当中最寒冷的季节,其他的为春、夏、秋。天文学上认为是从12月至2月,中国习惯指立冬到立春的三个月时间,也指农历“十、十一、十二”三个月。")]Winter = 4}

写个扩展方法。

扩展方法也是一个知识点,回头有时间我写一下。

/// <summary>/// 枚举拓展工具类/// </summary>public static class EnumTools{/// <summary>/// 获取当前枚举描述/// </summary>/// <param name="enumValue"></param>/// <returns></returns>public static string GetEnumDescription(this Enum enumValue){Type type = enumValue.GetType();MemberInfo[] memInfo = type.GetMember(enumValue.ToString());if (null != memInfo && memInfo.Length > 0){object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);if (null != attrs && attrs.Length > 0)return ((DescriptionAttribute)attrs[0]).Description;}return enumValue.ToString();}}

unity新建一个脚本,调用获取枚举注释的方法

public class NewBehaviourScript : MonoBehaviour{void Start(){Season season = Season.Spring;Debug.Log(season.GetEnumDescription());season = Season.Summer;Debug.Log(season.GetEnumDescription());season = Season.Autumn;Debug.Log(season.GetEnumDescription());season = Season.Winter;Debug.Log(season.GetEnumDescription());}private void Update(){}}

结果显示

现在有个疑问,既然枚举可以用特性,并且代码获取到枚举的注释。 那么变量 方法类也应该可以使用此特性获取到,额回头试试

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。