C# 通过反射获取枚举类型

80 篇文章 5 订阅

问题
  • 问题是这样的,我要在枚举类型上面加上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())
{

}

所以通过static|public对字段进行筛选也是可以的,这个链接就是这种做法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值