これから継承すべき基本クラスは基本的な名前/値のペアですか?継承できる名前/値クラス?
たとえば、2つのプロパティ(名前と値)しか持たないクラスがいくつかあります。彼らはすべてField、Dataなどのユニークなものを呼び、さまざまなものに使用されていますが、内部はすべて同じで、2つのプロパティ(名前と値)があり、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
@ニックあなたの継承するクラスについてはエラーではなく、むしろTupleについて言います。 Tupleには0引数のコンストラクタがありません。利用できるコンストラクタの1つを自分で呼び出す必要があります。例えば。 public MyClass(Enum myEnum、string str):ベース(myEnum、str){}。私はあなたがTupleから継承しているのはなぜか、それを単なるstructまたはstructの代わりに使用しているのかどうかはわかりませんが。 –