我有一个代码生成器,可以解析类和类的xml规范。属性 - 包括每个属性的类型。
string
int
bool
类型的属性很容易处理。
但如果类型不是原始类型,那么我需要确定它是class
还是enum
如果我有MyObject
MyType
的实例,我可以通过以下方式确定MyType
是否为enum type
:
if (MyType.IsEnum()) {}
但我所拥有的只是该类型的名称。
答案 0 :(得分:1)
尝试
instance.GetType().IsEnum
或者只是
myType.IsEnum;
UPD。没有注意到你只有类型名称。
Type.GetType("my_type").IsEnum
答案 1 :(得分:1)
尝试Type.GetType认为它符合您的要求,或者至少会返回一个Type对象,然后您可以调用.IsEnum
您需要为您的类型使用完全限定名称,例如" MyNamespace.MyType"不只是" MyType"
答案 2 :(得分:0)
使用setTimeout(function() {
$('#' + stack_id).slideUp(500).animate({
opacity: 0
}, {
queue: false,
duration: 'slow'
});
}, 1000);
});
方法
来自MSDN Type.GetType Method (String)
获取具有指定名称的Type,执行区分大小写 搜索
要使其正常工作,您需要提供枚举类型的程序集限定名称
要获取的类型的程序集限定名称。如果类型在当前正在执行 汇编或在Mscorlib.dll中,提供类型名称就足够了 由其命名空间限定
Type.GetType("nameofEnum")
因此,如果您的枚举在某个命名空间内声明,则需要包含完整的“路径”
Type enumType = Type.GetType("AssemblyName.EnumName");
bool isEnum = enumType.IsEnum;
然后获取类型
namespace Project
{
namespace MyAllEnums
{
public enum DesignPatterns
{
Spagetti = 0,
Factory = 1
}
}
}
如果您没有关于枚举类型的程序集名称的信息,那么另一种方法将检查您拥有的所有程序集,并返回您尝试查找的名称的第一个类型。
当前组装示例
Type enumType = Type.GetType("Project.MyAllEnums.DesignPatterns");
if (enumType.IsEnum)
{
// ...
}
在上面的方法中,你得到的类型没有汇编限定名,但要注意你的内部命名空间内的枚举是否无效。