>>99
ああDoSomething()がとる引数は可変なんだね。
その場合は、
Public Sub Hoge(ByVal myDelegate As [Delegate], ByVal ParamArray params As Object())
  Try
    myDelegate.DynamicInvoke(params)
  Catch ex As Exception
    ............

みたいにすればいいんじゃない?(ご免、実際こういう処理はやったことがないので
あんまり自信がない)

後半の継承の話についてはおっしゃるとおり。
処理によって必要な引数が変わるならやっぱり継承をつかった多態は向いてないかもね。