2010-08-05 62 views
4

我的目的是找出一个类是否直接实现一个接口。在下面的例子中,类B实现接口IB,接口IB实现IA。如何找到接口继承层次对于一个类型?

如何找出继承层次?当我们在对象浏览器中查看类型时,它会显示详细的层次结构。我怎样才能达到类似的结果?

interface IA 
{ 
    string Member1 { get;set; } 
} 

interface IB : IA 
{ 
    string Member2 { get; set; } 
} 

class B : IB 
{ 
    public string Member1 { get; set; } 
    public string Member2 { get; set; } 
} 

反射截图

alt text http://img571.imageshack.us/img571/7485/49211426.png

在从反射器所采取的屏幕截图它显示了接口的分层结构为好。

如何找出Type的接口层次结构。

+1

http://msdn.microsoft.com/en-us/library/system.type.basetype.aspx – 2010-08-05 15:54:28

+0

B(typeof(B).BaseType)的BaseType将返回对象 – Zuhaib 2010-08-05 16:04:01

+0

在这种情况下,你知道它不是由任何其他类型继承,你可以自己检查接口......就像'Type.GetInterfaces方法'一样(你可以递归地调用它来获得所有的接口 - 并不真正有效,但工作)。 – 2010-08-05 16:14:00

回答

3

反思和.NET核心是为了使接口快速使用而构建的。因此,Type.GetInterfaces返回类型可以响应的所有接口,“扁平化”进程中的接口层次结构。

如果您想要对这些接口的血统进行神圣化,您还需要在每个接口上调用GetInterfaces。没有捷径,因为接口层次对CLR运行时没有多大价值。