inputObject
には、これらのメンバーがすべて含まれているとします。たとえば、あなたの使用してWinFormsの場合、それはコントロールのようになります。
Sub addHandlers(ByVal inputObject As Control)
AddHandler inputObject.MouseDown, AddressOf HandleClick
AddHandler inputObject.MouseUp, AddressOf HandleMouseUp
End Sub
またはWPFであれば、UIElement
を使用します。
Sub addHandlers(ByVal inputObject As UIElement)
AddHandler inputObject.MouseDown, AddressOf HandleClick
AddHandler inputObject.MouseUp, AddressOf HandleMouseUp
End Sub
は今、その型である任意のコントロールはaddHandlers
に渡すことができます。
EDIT:
それらのすべての間には一般的なタイプが存在しない場合、あなたはでき利用の反射:
Sub addHandlers(ByVal inputObject As Object)
Dim type = inputObject.GetType()
Dim handleClickDel = New MouseEventHandler(AddressOf HandleClick)
Dim handleUpDel = New MouseEventHandler(AddressOf HandleMouseUp)
type.GetEvent("MouseDown").AddEventHandler(inputObject, handleClickDel)
type.GetEvent("MouseUp").AddEventHandler(inputObject, handleUpDel)
End Sub
デリゲート型はまだかかわらず、一致している必要があります。しかし、これは私にはちょっとした感じです。可能であれば、必要に応じてaddHandlers
のさまざまなオーバーロードを作成し、それらの多くの作成を避けるために基本タイプを使用してみてください。 inputOjbect
として渡すことができるタイプのコードを所有している場合は、インターフェースを使用してください。
私はそのことを考えたが、彼らはすべての継承されたタイプを共有することはありません。 – SeriousSamP
@SeriousSamPいくつか追加の詳細を追加しました。 – vcsjones
私はあなたの反射方法にバリエーションを使用しています。 – SeriousSamP