Есть ли базовый класс, от которого я должен унаследовать, это просто базовая пара имя / значение?
Например, у меня есть несколько классов, которые имеют только два свойства (имя и значение). Все они называли что-то уникальное, например, Field, Data и т. Д., И все они используются для разных целей, но все они одинаковы, имеют два свойства (имя и значение), и у них есть связанный класс коллекции, который наследуется от CollectionBase. Могу ли я что-то сделать, чтобы они все использовали один и тот же код или наследовали один и тот же базовый класс, чтобы он не был таким избыточным? Они также находятся на разных уровнях защиты сборки, поэтому я не хочу использовать один и тот же класс для каждого сценария.
Public Class Field
Public Sub New()
End Sub
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _value As String
Public Property Value() As String
Get
Return _value
End Get
Set(ByVal value As String)
_value = value
End Set
End Property
End Class
Private NotInheritable Class FieldCollection
Inherits CollectionBase
Public Sub New()
End Sub
Public Sub Add(ByVal field As Field)
List.Add(field)
End Sub
Public Sub Remove(ByVal index As Integer)
If index > Count - 1 Or index < 0 Then
Console.WriteLine("Can't remove this item")
Else
List.RemoveAt(index)
End If
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As Field
Get
Return CType(List.Item(index), Field)
End Get
End Property
End Class
Public Class Data
Public Sub New()
End Sub
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _value As String
Public Property Value() As String
Get
Return _value
End Get
Set(ByVal value As String)
_value = value
End Set
End Property
End Class
Private NotInheritable Class DataCollection
Inherits CollectionBase
Public Sub New()
End Sub
Public Sub Add(ByVal data As Data)
List.Add(data)
End Sub
Public Sub Remove(ByVal index As Integer)
If index > Count - 1 Or index < 0 Then
Console.WriteLine("Can't remove this item")
Else
List.RemoveAt(index)
End If
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As Data
Get
Return CType(List.Item(index), Data)
End Get
End Property
End Class
и т.д ...
UPDATE
Вот PasteBin кода, который я хочу оптимизировать. Надеюсь, это поможет.