c#检查类是否定义了枚举

时间:2015-11-18 22:36:47

标签: c# reflection

我有一个这样的课程

public class SomeClass {
public enum Status { A,B,C}
}

我想做

bool enumExists = MysteryMethod("SomeClass.Status");

MysteryMethod里面有什么?

2 个答案:

答案 0 :(得分:2)

枚举本身就是类型。

嵌套类型在容器类和类型名称

之间用+命名

因此,神秘方法的名称为Type.GetType

public class SomeClass
{
    public enum Status
    {

    }
}

public class Program
{
    public static void Main(string[] args)
    {
        Type t = Type.GetType("Lab.SomeClass+Status", false);
        bool isEnum = t.IsEnum;
    }
}

答案 1 :(得分:0)

想出来:

var asm = System.Reflection.Assembly.GetExecutingAssembly(); 
var typ = asm.GetType("SomeClass+Status")
var enumExists = (typ != null && typ.IsEnum);

当您使用GetType时,Trick是将类名后面的+。