一般来说,我们给枚举注释这样。
,写个/// <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()
{
}
}
结果显示
现在有个疑问,既然枚举可以用特性,并且代码获取到枚举的注释。 那么变量 方法类也应该可以使用此特性获取到,额回头试试