我有很多继承基类的aspx页面。 基类有一个方法名称“GetGroupID”,这个方法返回不同的数据取决于我所在的页面,现在几个页面需要覆盖这个方法(这很好)。
问题: 我有几乎所有页面中的用户控件,现在这个用户控制来自页面基类的Accessess GetGroupID方法,只要我知道页面类名,这很好,因为我有这么多页面,一个基类和一个用户控件... 如果我可以从UserControl获取Page Class名称并动态执行基本方法,那将是很好的。
Curreny我有以下代码在UserControl中工作
Dim c As homepage = CType(Me.Page, homepage)
Call c.getGroupID
但是在上面的示例中,我知道了Page Class名称(主页),但是假设我在一个具有类名“portal”的不同页面上,我将无法跟踪这么多页面。
我想在用户控件中的基类中执行该方法,并且我想为某些页面覆盖此方法。
请告知。
答案 0 :(得分:1)
您可以让基页实现自定义interface
,例如IGroupable
,方法为GetgroupId
。然后你只需要在UserControl
知道它是Page
是 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
您以这种方式获取UserControl
中的ID:
Class UserControl1
Inherits UserControl
Dim id As Int32 = DirectCast(Me.Page, IGroupable).GetGroupId()
End Class