2009-08-20 57 views
2

讓我們假設類型MyType實現接口IMyInterface。如何找到聲明一個接口的類型?例如,獲取.NET類型聲明一個接口

class UnitTest 
{ 
    MyTypeBase : IMyInterface { } 
    MyType : MyTypeBase { } 

    void Test() { 
    Type declaration = FindDeclaration(typeof(MyType), typeof(IMyInterface)); 
    Assert.AreEqual(typeof(MyTypeBase), declaration) 
    } 
+0

是你的問題:如果我只知道接口類型,IMyInterface的,如何找到實現該接口的任何類類型?是嗎?你基本上想要搜索任何和所有實現該接口的類? – 2009-08-20 20:21:57

+0

還是你有兩個類,就像你展示的那樣,而你正在查看最底層(後代智者)的類,並且想知道你需要去多大的樹才能找到最頂級的類實現一個接口? – 2009-08-20 20:23:44

+0

我問的原因是你的問題並不完全清楚。我讀第一行爲「讓我們假設我的車被讀了,我怎麼找到一輛紅色的汽車?」 – 2009-08-20 20:24:18

回答

1

您需要使用TypeGetInterfaceGetInterfaces方法。

例如,你可以這樣做:

Type declaration = typeof(MyType).GetInterface("IMyInterface"); 
Assert.IsNotNull(declaration) 

或者您可以撥打GetInterfaces和遍歷結果,直到你找到IMyInterface

來源:

Type.GetInterface(string)

Type.GetInterfaces()

+0

不幸的是,事實證明,迭代調用GetInterfaces的接口是唯一的解決方案。 – 2009-08-22 05:10:30

0

你會走上Type.BaseType,直到你達到你想要的水平?

+0

恩,謝謝,這對班級很有用。但是這對接口來說效果不佳。 – 2009-08-20 07:25:52

+0

我想,應該有一些小技巧:) – 2009-08-20 07:27:11

+0

什麼?你不是想找到這個類,而不是界面? – 2009-08-20 07:27:40