2010-08-05 60 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運行時沒有多大價值。