2011-10-21 5 views
6

IListインターフェイスにICollectionが必要であるとプログラムで判断する方法(リフレクションなど)がありますか?IEnumerableが必要ですか?インタフェース要件/依存関係/継承をプログラム的に判断できますか?

私はreflection libraryに取り組んでおり、この情報を利用できるシナリオを見つけましたが、それを得る方法は見つけられませんでした。コンパイラとIDE(明らかに)はどちらも関係を知っているので、何とか利用可能でなければなりません。

私はILやソースの解析を含まない提案を望んでいますが、どちらも実際の使用のためのオプションではありません。

+0

COMオブジェクトでこれを行うことができます。 – VoidStar

答えて

4

Type.GetInterfacesを使用してこの情報を検出できます。 PowerShellの下

+0

Doh!ありがとう、ちょうどあなたがしばらくそれを使用していない場合、何かを忘れることについて行くことができる速さを示しています:) –

+0

実際には、再帰も必要ではないようです(私はすべての必要なインターフェイスを持つ配列を取得)。 –

+0

@MortenMertner:...あなたの最初のコメントをもう一度検証します:-) – Jon

1

例:

PS C:\> [collections.ilist].getinterfaces() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  False ICollection 
True  False IEnumerable 

同等のC#には次のようになりますtypeof(IList).GetInterfaces()

関連する問題