是否有一個基類,我應該繼承,這只是一個基本的名稱/值對?我可以繼承的名稱/值類?
例如,我有幾個只有兩個屬性(名稱和值)的類。他們都稱爲獨特的喜歡的字段,數據等等,都用於不同的東西,但內臟是相同的,兩個屬性(名稱和值),他們有一個相關的集合類繼承自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
Here's a PasteBin of the code that I'm looking to streamline.希望這有助於。
這似乎是足夠的,但OP指出他不想使用相同的類,而'KeyValuePair'是'struct',所以繼承不是一個選項。 –
我想寫一個繼承Tuple的類,但是我無法使它工作。它只是告訴我Tuple 不包含帶0參數的構造函數。儘管我寫了一個構造函數,它帶有2個參數,一個Enum和一個字符串。 –
Nick
@Nick錯誤並不是抱怨你的繼承類,而是關於元組。由於Tuple沒有0參數構造函數,所以你必須自己調用其中一個可用的構造函數。例如。 public MyClass(Enum myEnum,string str):base(myEnum,str){}。雖然我不確定你爲什麼從Tuple繼承,而不是僅僅使用它或結構。 –