首页 > 解决方案 > C#- 给定一个枚举名称作为字符串返回枚举的所有值

问题描述

我有一个枚举名称列表。如果有帮助,此列表可能更具有描述性,以具有诸如 Library.Base.Enums.{EnumName} 之类的枚举路径。枚举可以位于不同的文件夹中,例如 MyEnumCategories 可以存储在文件夹 Library/Base/Enums/Category/ MyEnumCities 可能位于 Library/Base/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
}

输出:值 =[“服务”,“公司”,“企业”,....“西雅图”,“旧金山”,]

标签: c#listenums

解决方案


使用 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();

推荐阅读