找到枚举的成员

时间:2013-03-20 11:51:39

标签: c# .net reflection

我想沿着这条

行做点什么
var membersOfTypeEnum =  typeof(myType).GetMembers().Where(i => i.IsEnum);

但是,在上面的模型中,i的类型为MemberInfo,并且未实现IsEnum

GetType(i).NameRuntimeType这是包含真实类型的反射类型(我认为),但我似乎无法找到一种方法来获取成员本身的类型。

那么,我如何找到给定类型的成员(即枚举)?

编辑,假设我想反映这种类型:

public static class MyType
{
    public enum EnumMember
    {
        One = 1,
        Two = 2,
    }

   public static string NotEnumMember = "this is a string";
}

2 个答案:

答案 0 :(得分:8)

使用GetNestedTypes获取所有嵌套类型,并检查它是否为Enum

typeof(MyType)
    .GetNestedTypes()
    .Where(type => type.IsEnum)

答案 1 :(得分:4)

这应该按照您的要求执行 - 使用GetNestedTypes

var membersOfTypeEnum =  typeof(MyType).GetNestedTypes()
                           .Where(i => i.IsEnum);

实例:http://rextester.com/CGK11010