繁体   English   中英

在C#反射中获取“类型”的类型

[英]Getting the type of a “Type” in C# reflection

在文档中找不到比我想象的要难的东西。 无论如何,我有一些Type实例。 我如何找出它们是否代表类,方法,接口等?

class Bla { ... }
typeof(Bla).GetKindOrWhatever() // need to get something like "Class"

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

Type.IsClass在这里可能会有所帮助。 也是Type.IsInterface

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

类型上有很多“ IsXxxx”属性。 希望这些会做您想要的。

顺便说一句,您应该在SO上检查关于此主题的其他问题,包括这个问题。

typeof(System.Enum).IsClass ==否

...如果您要检查的类型是枚举类型,那么会有一些奇怪(但可预测)的结果。

Type类有很多属性。

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

等等

http://msdn.microsoft.com/zh-CN/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))
        {
            //...
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM