C#-给定一个枚举名称作为字符串,返回枚举的所有值



我有一个枚举名称列表。此列表可能更具描述性,以便具有枚举路径(如库(。基础枚举。{EnumName}(如果有帮助的话(。枚举可以位于不同的文件夹中,例如MyEnumCategories可以存储在Library/Base/enums/Category/文件夹中,MyEnumCities可以位于Library/Basic/enums/Locations/文件夹中。我有一个不断增长的枚举名称列表,我需要能够从列表中获取存储在枚举中的所有值。我需要返回枚举的所有值,如下所示:

List<string> enumNames=["MyEnumCategories","MyEnumCities"]
List<string> values = new List<strings>
public enum MyEnumCategories
{
Service = 0,
Corporate = 1,
Enterprise = 2,
AllSites = 3,
IndividualSites = 4,
Site = 5,
Notification = 6
}
public enum MyEnumCities
{
Chicago= 0,
Boston= 1,
NewYork= 2,
Denvor= 3,
Austin= 4,
Seattle= 5,
SanFrancisco= 6
}

输出:values=["服务"、"公司"、"企业"、……"西雅图"、"旧金山"、]

使用linq既快捷又简单。如果您想跨越多个程序集或添加不区分大小写或部分匹配等,您将需要添加一些额外的位。

var enumNames = new[] { "MyEnumCategories", "MyEnumCities" };
var enumTypes = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.IsEnum && enumNames.Contains(x.Name));
var values = enumTypes.SelectMany(Enum.GetNames).ToArray();

最新更新