当前位置:  开发笔记 > 编程语言 > 正文

如何通过反射获取接口基类型?

如何解决《如何通过反射获取接口基类型?》经验,为你挑选了2个好方法。



1> BFree..:
Type[] types = typeof(IFoo).GetInterfaces();

编辑:如果您特别想要IBar,您可以:

Type type = typeof(IFoo).GetInterface("IBar");


@mxmissile然后你[阅读文档](http://msdn.microsoft.com/en-us/library/ayfa0fcd.aspx)并了解`接口IBar 的名称(用于`GetInterface) `)是`IBar \`1`.
如果`IBar`有通用参数怎么办?这个论点不得而知.`"IBar <>"`不起作用.

2> Coincoin..:

接口不是基本类型.接口不是继承树的一部分.

要访问interfaces列表,您可以使用:

typeof(IFoo).GetInterfaces()

或者如果您知道接口名称:

typeof(IFoo).GetInterface("IBar")

如果您只想知道某个类型是否与其他类型(我怀疑您正在寻找)隐式兼容,请使用type.IsAssignableFrom(fromType).这相当于'is'关键字,但与运行时类型相同.

例:

if(foo is IBar) {
    // ...
}

相当于:

if(typeof(IBar).IsAssignableFrom(foo.GetType())) {
    // ...
}

但在你的情况下,你可能更感兴趣:

if(typeof(IBar).IsAssignableFrom(typeof(IFoo))) {
    // ...
}

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有