为什么子程序不能同时实现接口和处理事件?

| 为什么子程序不能同时实现接口并处理事件? 以下给出了我的语法错误:
Sub MySub() Handles MyButton.Click Implements MyInterface.MyMethod
End Sub
我知道我可以用另一种方法来处理这种逻辑,但这不是重点。我只想了解其背后的原因。     
已邀请:
语法错误与VB语言规范第9.2.1节中的语言语法一致:   子声明:: =     [属性] [ProcedureModifier +]子签名[HandlesOrImplements] LineTerminator     块     结束子语句终止符 和   HandlesOrImplements :: = HandlesClause |实施条款 因此,任何一种方法仅支持一种方法。规范没有(快速查看)包含此限制的原理。为此,您需要与Microsoft VB语言设计团队中的某人交谈。 1这包括在‹VSRoot› \\ VB \\ Specifications \\ 1033下的VS安装中。     
我从未见过有关VB.NET团队为何做出此决定的详细讨论,但老实说,我很难从OOP设计的角度看这有什么意义。事件处理程序方法通常不应该做任何工作。相反,他们应该呼吁其他方法来进行繁重的工作。他们调用的另一种方法是实现您的接口的方法。 但是,如果您执行以下操作,肯定可以实现:
Public MustInherit Class MyParentClass
    Protected WithEvents MyButton As Button

    Protected MustOverride Sub MySub() Handles MyButton.Click
End Class

Public Class MyDerivedClass : Inherits MyParentClass : Implements IMyInterface
    Protected Overrides Sub MySub() Implements IMyInterface.MyMethod
        \' Do something here...
    End Sub
End Class
还请记住,事件处理程序方法通常具有独特的签名。就像是:
Public Sub MySub(ByVal sender As System.Object, ByVal e As System.EventArgs)
这是为什么事件处理程序方法也能够实现接口中定义的方法的极少见的另一个原因。     

要回复问题请先登录注册