【问题标题】:Get all ENUM objects in project获取项目中的所有 ENUM 对象
【发布时间】:2016-04-05 01:46:29
【问题描述】:

我的项目中的任何地方都有一些枚举对象。它们具有相同的功能。如何使用过滤器找到所有枚举对象。我不确定过滤器,但我认为我们可以为 Enum 对象添加一个属性,并根据该属性过滤类型。

例如,我在 2 个类中有 2 个枚举对象:

public class FirstClass
{
    [HelloWord]
    public enum FirstEnum
    {
        View = 1,
        Edit = 2
    }
}

public class SecondClass
{
    [HelloWord]
    public enum SecondEnum
    {
        Good,
        Bad
    }
}

所以,我想列出项目中包含属性 [HelloWorld] 的所有枚举对象。我该怎么做?

【问题讨论】:

    标签: c# reflection enums


    【解决方案1】:

    这是一个 Linq 表达式,它将遍历所有类型,这些类型既是枚举,又具有您自定义的“HelloWorld”属性。

    foreach(Type enumType in Assembly.GetExecutingAssembly().GetTypes()
                            .Where(x => x.IsSubclassOf(typeof(Enum)) &&
                                   x.GetCustomAttribute<HelloWorldAttribute>() != null))
    {
        Console.WriteLine(enumType.Name);
    }
    

    【讨论】:

    • Assembly.GetExecutingAssembly() 可能不是 OP 想要的程序集。
    • @DannyChen OP 说“它们具有相同的功能”并且在“我的项目”中,所以我最好的猜测是它是正在执行的程序集。
    • @Danny Chen:你有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2019-10-17
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多