0

基本クラスを継承する aspx ページが多数あります。基本クラスには「GetGroupID」というメソッド名があります。このメソッドは、現在のページに応じて異なるデータを返します。現在、このメソッドをオーバーライドする必要があるページはほとんどありません (これは問題ありません)。

問題: ほとんどすべてのページに配置されているユーザー コントロールがあります。現在、このユーザー コントロールは、ページ ベース クラスから GetGroupID メソッドにアクセスしています。これは、ページ クラス名を知っていれば問題ありません。ユーザー コントロール... UserControl からページ クラス名を取得し、基本メソッドを動的に実行できると便利です。

Curreny UserControl内で動作する次のコードがあります

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

ただし、上記の例では、ページ クラス名 (ホームページ) はわかっていますが、「ポータル」というクラス名を持つ別のページにいるとしましょう。非常に多くのページを追跡することは不可能です。

ユーザー コントロール内の基本クラスでメソッドを実行したいのですが、特定のページに対してこのメ​​ソッドをオーバーライドしたいと考えています。

お知らせ下さい。

4

1 に答える 1

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
于 2012-09-09T21:15:41.833 に答える