Generics型の判定(.net)

意外とややこしいvb.net or C#のGenerics型判定。

[VB.net]

Dim a As New List(Of String)()
Dim t As Type = a.GetType()
If t.IsGenericType AndAlso 
   t.GetGenericTypeDefinition() = GetType(List(Of )) Then
  ' オブジェクトaはGenerics型List
Elese
  ' 以外
End If

[C#]

object a = new List() {};
if (typeof(List<>).IsAssignableFrom(
             a.GetType().GetGenericTypeDefinition())) {
  // オブジェクトaはGenerics型List
} else {
  // 以外
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です