在C#reflection中获取“类型”的类型

这在文档中比我想象的更难找到。 无论如何,我有一些Type实例。 我怎样才能知道它们是代表类,方法,接口等?

 class Bla {...}
 typeof(Bla)。GetKindOrWhatever()//需要得到像“Class”这样的东西

(我在Linux上使用Mono,但这不应该影响问题,我正在制作可移植的代码)

Type.IsClass可能会有帮助。 还有Type.IsInterface

查看… http://msdn.microsoft.com/en-us/library/system.type_members.aspx

Type上有相当多的“IsXxxx”属性。 希望这些可以做你想要的。

顺便说一句,你应该在SO上查看关于这个主题的其他问题,包括这个…

typeof(System.Enum).IsClass == false

…如果您要检查的类型是枚举类型,因为有一些奇怪的(但可预测的)结果。

Type类有很多属性。

 typeof(Bla).IsClass typeof(Bla).IsInterface 

等等

http://msdn.microsoft.com/en-us/library/system.type_properties.aspx

Type类具有一些名为IsXXX的属性。
例如,它有一个IsEnum,IsClass,IsInterface。
如果我理解你的问题,这就是你需要的

正如其他人所提到的,Type类具有各种属性,如果您只需要知道类型是类,接口,委托等,就可以使用它们。

如果您有一个Type对象并且想知道它是否是特定类型,那么我建议使用Type类上的IsAssignableFrom方法:

  Type objectType = obj.GetType(); Type interfaceType = typeof(IExample); if (interfaceType.IsAssignableFrom(objectType)) { //... } 

Type.IsClass属性 ?