如:
public class test
{
   public enum enum1
   {
    
   }
    public enum enum2
   {
    
   }
   public enum enum3
   {
    
   }
   class te {}
   public int i = 0;
}
我现在要一个方法,能找到test类型中所有的枚举

解决方案 »

  1.   


    foreach (Type t in typeof(test).GetNestedTypes(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
                    Console.WriteLine(t.Name);
      

  2.   

    更严谨一点:            foreach (Type t in typeof(test).GetNestedTypes(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
                    if (t.IsEnum)
                        Console.WriteLine(t.Name);
      

  3.   


                Type t = typeof(test);
                Type[] types = t.GetNestedTypes();
                List<Type> enums = new List<Type>();
                foreach(Type type in types)
                {
                    if(type.BaseType == typeof(Enum))
                    {
                        enums.Add(type);
                     }
                }
      

  4.   

    List<Type> enums = new List<Type>(typeof(test).GetNestedTypes()).FindAll(new Predicate<Type>(delegate(Type type) { return type.IsEnum; }));3楼的BindingFlags相当于没有
      

  5.   

    我的目的是让楼主知道BindingFlags的用途,如果他这个例子里的某一个enum不是public就有用了