2009-08-20 14 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というのがわかっている場合、どのように私は、このインタフェースを実装する任意のクラス型を見つけるのですか?それですか?基本的に、そのインターフェースを実装するすべてのクラスを検索したいのですか? –

+0

それは、あなたが示したような2つのクラスを持っていて、一番下のクラス(子孫的なクラス)を見ていて、ツリーのどれくらい上にあるかを知りたい場合、インタフェースを実装していますか? –

+0

私が求めている理由は、あなたの質問が完全にはっきりしないということです。私は最初の行を「私の車が読んでいると仮定しましょう。赤い車を見つけるにはどうしたらいいですか? –

答えて

1

TypeGetInterfaceまたはGetInterfacesの方法を使用する必要があります。

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

それともIMyInterfaceを見つけるまで、あなたは結果を通じてGetInterfaces、ループを呼び出すことができます:あなたがこれを行うことができますたとえば

出典:

Type.GetInterface(string)

Type.GetInterfaces()

+0

はい、残念ながら、GetInterfacesを呼び出すインターフェイスを反復処理することが唯一の解決策であることが判明しました。 –

0

あなたが望むレベルに達するまで、あなたはType.BaseTypeまで歩きますか?

+0

まあ、ありがとう、これはクラスのために働く。しかし、これはインタフェースではうまく機能しません。 –

+0

私は、いくつかのトリックがあるはずだと思います:) –

+0

何ですか?あなたはインターフェイスではなく、クラスを見つけたいですか? –

関連する問題