问题
- 问题是这样的,我要在枚举类型上面加上
ShowName
的特性,这样就可以在编辑器里面显示友好的文本,而不是枚举的英文名称
//该接口可以获得该枚举类型的所有值, 也是属于该UnitType类型的
Enum.GetValues(typeof(UnitType))
//该接口获得的是定义时的名称,例如None,Hero,Summoned
var names = Enum.GetNames(typeof(UnitType))
//在System.Reflection命名空间下面有GetCustomAttribute<T>()
Type curType = typeof(UnitType)
var showNames = (from n in names
let field = curType.GetField(n)
let showName = field.GetCustomAttribute<ShowNameAttribute>()
select showName.?Name??n).ToArray()
反射获得的多余字段
- 因为枚举类型的本质是上面这样的,所以通过反射获取所有字段的时候会有一个
value
类型
foreach(var field in typeof(UnitType).GetType().GetFields())
{
}