私のタイプがMyTypeであるとします。タイプが汎用インターフェースを実装しているかどうかを調べる
- がMyTypeがIListインターフェイスを実装している場合(1)への答えはイエス、Tが何であるかを見つける場合には、いくつかのT.
- ため、見つける:私は、次の操作を実行します。
これはGetInterface()ですが、特定の名前で検索することしかできません。 「フォームのIListのあるすべてのインターフェイス」を検索する方法がある
関連(インターフェイスがIListののサブインターフェイスだった場合、それは働いていた場合、それはまた便利woudl可能な場合には。):How to determine if a type implements a specific generic interface type
これは配列の大文字と小文字も扱います。配列を明示的にテストする場合は、 "if(myType.IsArray)return myType.GetElementType();"を使用します。 (そして、これは速いかもしれませんが、これはパフォーマンス上決定的ではないと思っています) – yoyo
.IsInterfaceが必要な理由について興味があった私にとっては、GetGenericTypeDefinition()は非ジェネリック型で呼び出された場合にスローされます。 – GameFreak
Type.IsGenericTypeプロパティは、netstandard 1.6以下では使用できません(したがって、.NET Core 1.0では使用できません)が、type.GetTypeInfo()。IsGenericTypeの代わりにTypeInfo.IsGenericTypeを使用できます。 – dotarj