在其兄弟姐妹中重用子类方法的解决方案(ASP.NET / VB.NET)

时间:2017-01-04 18:16:13

标签: asp.net vb.net design-patterns webforms mvp

我有5个网页表单,其中包含具有不同功能的相同用户控件。当前系统遵循MVP模式。所有这些Web表单都继承自单个基类(请参阅下图)。现在,我必须单独禁用每个表单以适应所有表单通用的特定条件。所以,我为其中一个表单编写了一个方法来禁用其用户控件中的每个字段,它工作正常。我可以将此方法重新用于其余的Web表单,因为它们都包含相同的用户控件集。 enter image description here

DisableControls()方法调用每个用户控件的DisableInputs()方法:

enter image description here

这将在其他Web表单类中重复。有没有人可以建议一个合适的解决方案来重复使用这种方法?

1 个答案:

答案 0 :(得分:1)

如果在DisableControls()的基类中包含一个空子,则可以在子类中覆盖它,而不必为基类提供子类的特定知识。

这样的事情:

Public Class Base
    Overridable Sub DisableControls()
        'Do nothing if nothing is implemented
    End Sub
End Class

Public Class Instance1
    Inherits Base
    Public Overrides Sub DisableControls()
        Me.UserControl1.DisableInputs()
        Me.UserControl2.DisableInputs()
    End Sub
End Class

Public Class Instance2
    Inherits Base
    Public Overrides Sub DisableControls()
        Me.UserControl3.DisableInputs()
    End Sub
End Class