型が実装しているすべてのインターフェイスを取得するにはGetInterfacesメソッドを使うことができます。
Typeクラスを使って型が実装しているインターフェイスを調べる
Imports System
Imports System.Collections.Generic
Imports System.Reflection
Class Sample
Shared Sub Main()
Dim t As Type = GetType(List(Of Integer))
' List(Of Integer)クラスが実装するインターフェイスをすべて取得して表示する
For Each ti As Type In t.GetInterfaces()
Console.WriteLine(ti)
Next
Console.WriteLine()
End Sub
End Class
実行結果
System.Collections.Generic.IList`1[System.Int32] System.Collections.Generic.IReadOnlyList`1[System.Int32] System.Collections.ICollection System.Collections.Generic.ICollection`1[System.Int32] System.Collections.IEnumerable System.Collections.Generic.IEnumerable`1[System.Int32] System.Collections.Generic.IReadOnlyCollection`1[System.Int32] System.Collections.IList
一方、型が特定のインターフェイスを実装しているかどうかについては、GetInterfaceメソッドでインターフェイス名を文字列で指定して調べるか、IsAssignableFromメソッドを使ってインターフェイス型への代入を行えるかどうかを調べることによって知ることができます。
ジェネリックインターフェイス型を指定する場合、オープンジェネリック型とクローズジェネリック型の違いに注意する必要があります。 ジェネリック型の文字列表記にも注意する必要があります。 詳しくは§.ジェネリック型の型情報の解説を参照してください。
型情報からインターフェイスの代入可能性を判定する方法についてはインスタンスや型が一致するか・インターフェイスやクラスから派生しているか判定するでも詳しく解説しています。