获取项目中的所有ENUM对象

时间:2016-04-05 01:46:29

标签: c# reflection enums

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

这是一个Linq表达式,它将循环遍历所有类型的枚举,并使您的自定义' HelloWorld'属于他们。

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