■No43215 (ふくこ さん) に返信
ジェネリックを使ってみてはいかがでしょう?
'''親データ格納クラス
Public Class BaseData
Private _formCaption As String = String.Empty
' 画面名(全画面共通の属性)
Public Property FormCaption() As String
Get
Return _formCaption
End Get
Set(ByVal Value As String)
_formCaption = Value
End Set
End Property
End Class
'''親処理クラス
Public MustInherit Class BaseProcess(Of TData As BaseData) ' BaseDataの制約をつけた型パラメータTData
Public MustOverride Sub GetData()
Public MustOverride Sub GetData(ByVal data As TData) ' TDataを引数とするメソッド
End Class
'''子データ格納クラス
Public Class SubAAAData
Inherits BaseData
Private _AAA As String = String.Empty
' 属性1(画面ごとの属性)
Public Property AAA() As String
Get
Return _AAA
End Get
Set(ByVal Value As String)
_AAA = Value
End Set
End Property
End Class
'''子処理クラス
Public Class SubAAAProcess
Inherits BaseProcess(Of SubAAAData) ' BaseDataの派生型を型パラメータに指定したBaseProcessを継承
Public Overrides Sub GetData()
'子データ格納クラス 生成
Dim dataAAA As New SubAAAData
'子データ格納クラスに値設定
dataAAA.AAA = "hoge"
'画面表示
GetData(dataAAA)
End Sub
Public Overrides Sub GetData(ByVal data As SubAAAData) ' 型が明示されたBaseProcessのメソッドをオーバーライド
'ここで子データ格納クラスの属性を取得して、画面に設定したい。
Dim aaa As String = data.AAA
End Sub
End Class
|