这在文档中比我想象的更难找到。无论如何,我有Type
的一些实例。如何确定它们是否代表类,方法,接口等?
class Bla { ... } typeof(Bla).GetKindOrWhatever() // need to get something like "Class"
(我在Linux上使用Mono但不应该影响这个问题,我正在制作可移植的代码)
答案 0 :(得分:9)
Type.IsClass
可能对此有所帮助。还Type.IsInterface
。
退房...... http://msdn.microsoft.com/en-us/library/system.type_members.aspx
Type上有很多“IsXxxx”属性。希望这些可以做你想要的。
顺便说一下,你应该在SO上查看关于这个主题的其他问题,包括这个......
typeof(System.Enum).IsClass == false
...如果您要检查的类型是枚举类型,因为有一些奇怪的(但可预测的)结果。
答案 1 :(得分:8)
Type类中有很多属性。
typeof(Bla).IsClass
typeof(Bla).IsInterface
等
http://msdn.microsoft.com/en-us/library/system.type_properties.aspx
答案 2 :(得分:1)
Type类有一些名为IsXXX的属性 例如,它有一个IsEnum,IsClass,IsInterface 如果我理解你的问题,这就是你需要的
答案 3 :(得分:1)
正如其他人所提到的,Type类有各种属性,如果你只需要知道你的类型是类,接口,委托等,你可以使用它们。
如果您有一个Type对象并且想知道它是否是特定类型,那么我建议使用Type类上的IsAssignableFrom方法:
Type objectType = obj.GetType();
Type interfaceType = typeof(IExample);
if (interfaceType.IsAssignableFrom(objectType))
{
//...
}
答案 4 :(得分:0)