オブジェクトパラメータがあり、オブジェクトがvb.netで指定されたインタフェースを実装しているかどうかを確認する必要があります。これをテストするには?オブジェクトがインタフェースを実装しているかどうかのテスト
ありがとうございました。
オブジェクトパラメータがあり、オブジェクトがvb.netで指定されたインタフェースを実装しているかどうかを確認する必要があります。これをテストするには?オブジェクトがインタフェースを実装しているかどうかのテスト
ありがとうございました。
使用TypeOf...Is:
If TypeOf objectParameter Is ISpecifiedInterface Then
'do stuff
End If
"do stuff"がオブジェクトのインターフェイスのメンバーを呼び出す必要がある場合は、おそらく 'As'を使用してオブジェクト 'IsNot Nothing'をキャストして保証したいとします。 (これにより、不要な2回目のキャストが防止されます)。 – bobbymcr
requiredInterface.IsAssignableFrom(representedType)
requiredInterfaceとrepresentedTypeの両方がタイプです
私はまた、スコットHanslemanことで、このarticleが、この場合に特に有用であることが判明。その中で、彼は私がやってしまった
C#
if (typeof(IWhateverable).IsAssignableFrom(myType)) { ... }
をお勧めします。
VB.Net
Dim _interfaceList As List(Of Type) = myInstance.GetType().GetInterfaces().ToList()
If _interfaceList.Contains(GetType(IMyInterface)) Then
'Do the stuff
End If
私はList(Of String)
とTypeOf tmp Is IList
戻りFalse
を持っています。 (Tの)リストは、複数のインターフェース(IEnumerableを、IListのを、...)を実装し、一つだけをチェックすることはVBで次のコードを必要とする:
If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then
// do stuff...
End If
ここで指定されたオブジェクト変数かどうかを判断する簡単な方法「Oであり特定のインターフェース「ISomething」を実装しています。
If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then
' The interface is implemented
End If
これはすばらしい質問です。Googleの検索クエリと正確に一致し、答えがあります。 – CodingBarfield