Public Enum ENUM_CLASS_TYPE As Integer
パターン1
パターン2
End Enum
Public Class TestCollection
Inherits System.Collections.CollectionBase
Public Sub Add(ByVal add As Test)
List.Add(add)
End Sub
Public Sub Remove(ByVal index As Integer)
If index > Count - 1 Or index < 0 Then
Throw New Exception("インデックスの範囲外です")
Else
List.RemoveAt(index)
End If
End Sub
Public Property Item(ByVal index As Integer) As Test
Get
Return CType(List.Item(index), Test)
End Get
Set(ByVal value As Test)
List.Item(index) = value
End Set
End Property
Protected Overrides Sub OnInsertComplete(ByVal index As Integer, ByVal value As Object)
CType(value, Test).Target = List
End Sub
End Class
Public Class Test
Private _TestItem As Test
Private _TestItems As New TestCollection
Private _Type As ENUM_CLASS_TYPE = ENUM_CLASS_TYPE.パターン1
Private _Target As System.Collections.IList
Private _TargetNo As Integer
Public Property TargetNo() As Integer
Get
Return _TargetNo
End Get
Set(ByVal value As Integer)
_TargetNo = value
End Set
End Property
Public Property Target() As System.Collections.IList
Get
Return _Target
End Get
Set(ByVal value As System.Collections.IList)
_Target = value
End Set
End Property
Public Property Type() As ENUM_CLASS_TYPE
Get
Return _Type
End Get
Set(ByVal Value As ENUM_CLASS_TYPE)
_Type = Value
If _Type = ENUM_CLASS_TYPE.パターン2 Then
Me.Target.Item(Me.TargetNo) = New Testパターン2
End If
End Set
End Property
Public Property TestItem() As Test
Get
Return _TestItem
End Get
Set(ByVal Value As Test)
_TestItem = Value
End Set
End Property
Public Property TestItems() As TestCollection
Get
Return _TestItems
End Get
Set(ByVal Value As TestCollection)
_TestItems = Value
End Set
End Property
End Class
Public Class Testパターン1
Inherits Test
Public ReadOnly Property AAAAA() As Integer
Get
Return 0
End Get
End Property
End Class
Public Class Testパターン2
Inherits Test
Public ReadOnly Property BBBBB() As Integer
Get
Return 0
End Get
End Property
End Class
|