Typeクラスには型がデリゲート型かどうかを調べるIsDelegate
のようなプロパティは用意されていません。 Typeがデリゲート型を表すかどうかを調べたい場合は以下のような方法をとることができます。
Typeクラスを使って型がデリゲート型かどうかを調べる
Imports System
Class Sample
Shared Function IsDelegate(ByVal t As Type) As Boolean
' 型がDelegate型またはDelegate型の派生クラスの場合はデリゲート型と判定する
Return t.IsSubclassOf(GetType([Delegate])) OrElse t.Equals(GetType([Delegate]))
End Function
Shared Sub Main()
For Each t As Type In New Type() { _
GetType(EventHandler), _
GetType(Action(Of ,)), _
GetType([Delegate]), _
GetType([MulticastDelegate]), _
GetType(ICloneable) _
}
Console.WriteLine("IsDelegate({0}) = {1}", t, IsDelegate(t))
Next
End Sub
End Class
実行結果
IsDelegate(System.EventHandler) = True IsDelegate(System.Action`2[T1,T2]) = True IsDelegate(System.Delegate) = True IsDelegate(System.MulticastDelegate) = True IsDelegate(System.ICloneable) = False