[英]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.