在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属性 ?