c# GetType(string)在Enum上返回null

本文关键字:Enum 返回 null GetType string | 更新日期: 2023-09-27 18:12:02

我试图从enum名称的字符串中获得enum定义的类型-例如:

namespace MySpace
{
    public class MyEnums
    { 
        public enum MyTestEnum { ... }
    }
}
Type enumType = GetType("MyEnums.MyTestEnum")

然而,我尝试的每个方法都返回null。在研究这个问题时,人们指出了一些需要注意的事情,所以以下是我所做的尝试,但没有成功:

  1. 使用包含命名空间的完全限定类名- "MySpace.MyEnums.MyTestEnum"

  2. 将程序集名称添加到字符串中,例如,"MySpace.MyEnums.MyTestEnum, MyAssembly"

  3. 遍历所有AppDomain.CurrentDomain.GetAssemblies()程序集并使用assembly.GetType("MySpace.MyEnums.MyTestEnum")

  4. 获取包含MyEnums类的汇编对象并使用它:

    Assembly assembly = typeof(MyEnums).Assembly; 
    Type enumType = assembly.GetType("MySpace.MyEnums.MyTestEnum");
    
当然,我可以很容易地得到"MySpace.MyEnums"的类型,但不能得到其中的枚举。

任何想法?

c# GetType(string)在Enum上返回null

我试图从枚举名称

的字符串中获得枚举定义的类型
Type enumType = Type.GetType("MySpace.MyEnums+MyTestEnum");

对于将来的问题,您可以使用typeof(MySpace.MyEnums.MyTestEnum).FullName;要了解类型名是如何生成/使用的。

找到了-需要对MyEnums类类型使用GetNestedType()方法