0

我有许多继承基类的 aspx 页面。基类有一个方法名“GetGroupID”,这个方法返回不同的数据取决于我在哪个页面,现在很少有页面需要覆盖这个方法(这很好)。

问题:我有几乎所有页面中都放置的用户控件,现在这个用户控件来自页面基类的 Accessess GetGroupID 方法,只要我知道页面类名称就可以了,因为我有这么多页面,一个基类和一个用户控件...如果我可以从 UserControl 获取页面类名称并动态执行基本方法,那就太好了。

Curreny 我有以下在 UserControl 中工作的代码

Dim c As homepage = CType(Me.Page, homepage)
Call c.getGroupID

但是在上面的示例中,我知道页面类名称(主页),但是假设我在具有类名“门户”的不同页面上,我不可能跟踪这么多页面。

我想在用户控件中执行基类中的方法,并且我想为某些页面覆盖这个方法。

请指教。

4

1 回答 1

1

您可以让基本页面实现自定义interface,例如IGroupable使用方法GetgroupId。然后你只需要知道UserControlPage IGroupable(直接或通过继承)并且你确定它有一个方法GetgroupId

Public Interface IGroupable
    Function GetGroupId() As Int32
End Interface

Class BasePage
    Inherits Page
    Implements IGroupable
    Public Overridable Function GetGroupId() As Integer Implements IGroupable.GetGroupId
        Return 1
    End Function
End Class

Class ChildPage
    Inherits BasePage
    ' default implementation of GetGroupId from base page '
End Class

Class SpecialPage
    Inherits BasePage
    ' override it here since it has a different implementation than in the base page '
    Public Overrides Function GetGroupId() As Integer
        Return 2
    End Function
End Class

您可以通过以下方式获得 id UserControl

Class UserControl1
    Inherits UserControl
    Dim id As Int32 = DirectCast(Me.Page, IGroupable).GetGroupId()
End Class
于 2012-09-09T21:15:41.833 回答