How to determine dynamically if type is an Interface using reflection?
对于初学者来说,这个问题并不是我读过100次的本文的重复(请继续阅读问题):如何确定一个类型是否实现了一个带有C反射的接口
我正在使用反射在运行时动态地迭代对象的属性来操作和添加数据。对于我来说,根本的问题很自然,您不能实例化一个Interface的实例,因此使用Activator.CreateInstance的代码以后不能针对被发现是Interface或Interface类型集合的类型运行。
假设我在Person班上有以下内容:
埃多克斯1〔5〕
在反射属性时使用以下代码,我可以确定该属性是否实现Interface:
江户十一〔七〕号
我的问题是,IList和List都有上述声明返回true。这是因为即使我们知道的List实际上也实现了一系列接口(即IList、ICollection、IEnumerable等)。
因为我是动态地进行这个调查,所以我不知道如何测试我的类型是否实现了一个特定的Interface,就像所有示例所显示的那样,比如我在开始时发布的链接,它执行以下操作:
江户十一〔16〕号埃多克斯1〔17〕
我需要帮助确定在动态和焦点上反映的对象属性是否直接是接口而不是具体类型?所有的例子都需要将已知的Interface测试为已知的具体类型,但是由于这是动态发生的,我不知道如何完成这一点?
- Type.IsInterface属性?
- 你读过文件吗?
- @Slaks-感谢您的质量帮助。它确实帮助我解决了这个问题。
您可以使用Type.IsInterface属性https://msdn.microsoft.com/en-us/library/system.type.isinterface(v=vs.110).aspx
- 透过树看不见森林的情况-这很好地起作用。从我的工作人员对C反射的了解来看,我显然错过了这一点。