Ich nehme an, T zu verwenden, aber ich bin mir nicht sicher, wie es richtig geht.Implementieren Sie die gleiche Logik für verschiedene Objekte wie T
Betrachten wir folgendes Beispiel.
Basisklasse:
Public Class HtmlBase
Implements IGetInformation
Public Overridable Function IsExist() As Boolean Implements IGetInformation.IsExist
Throw New NotImplementedException()
End Function
Public Overridable Function GetIdByName(pName As String) As Integer Implements IGetInformation.GetIdByName
Throw New NotImplementedException()
End Function
End Class
Beispiel Klassen, die von der Basisklasse erben:
Public Class HtmlSubSection
Inherits HtmlBase
'--sometimes i have to overload to add additioinal parameter
Public Overloads Function isExist(subsection As String) As Boolean
Dim dlsubkategorie As New DataLayer.DALSubSection
Return dlsubkategorie.CheckIfSubSectionExist(subsection)
End Function
Public Overrides Function GetIdByName(subsectionName As String) As Integer
Dim dlget As New DataLayer.DALSubSection
Return dlget.GetSubSectionIdByName(subsectionName)
End Function
End Class
Public Class HtmlSection
Inherits HtmlBase
'sometime i have to overload to add additioinal parameter
Public Overloads Function IsExist(section As String) As Boolean
Dim dlsubkategorie As New DataLayer.DALSection
Return dlsubkategorie.CheckIfSectionExist(section)
End Function
Public Overrides Function GetIdByName(Name As String) As Integer
Dim dlsubkategorie As New DataLayer.DALSection
Return dlsubkategorie.GetSectionIdByName(Name)
End Function
End Class
Wie bereits zwei Klassen zu sehen, die in ihren Methoden von Base erbt werden konnte hat die gleiche Logik (manchmal ich habe zu verwenden zusätzliche Parameter daher Überladungen dort, aber benutze diffrent DAL Klasse, um zu rufen. Ich möchte diese Logik in der Basisklasse implementieren und für jeden Punkt nur zu bestimmten DAL. Wie man das nicht immer in diesen Klassen schreibt zB:
Dim dlsubkategorie As New DataLayer.<DALSection>
Return dlsubkategorie.GetSectionIdByName(Name)
EDIT:
htmlbase Konstruktor:
Sub New()
End Sub
Sub New(pId As Integer)
_Id = pId
End Sub
HtmlSubSection des Konstrukteurs:
Sub New()
MyBase.New()
AvailableSentences = New List(Of HtmlSubSection_Sentence)
SelectedSentences = New List(Of HtmlSubSection_Sentence)
End Sub
Sub New(pId As Integer)
MyBase.New(pId)
End Sub
Sub New(pName As String)
_Name = pName
End Sub
Sub New(pId As Integer, pName As String)
MyBase.New(pId)
_Name = pName
End Sub
HtmlSection des Konstrukteurs:
Sub New()
MyBase.New()
End Sub
Sub New(pId As Integer)
MyBase.New(pId)
End Sub
Sub New(pId As Integer, pName As String, pPosition As Integer)
MyBase.New(pId)
_Name = pName
_Position = pPosition
End Sub
Sub New(pName As String)
_Name = pName
End Sub
Sub New(pName As String, pPosition As Integer)
_Name = pName
_Position = pPosition
End Sub
Was, wenn ich mehr Konstruktoren für jedes z. B. HtmlSection, HtmlSubSection haben? Schau dir Hauptredaktion an, ich habe dir gezeigt wie es genau aussieht. Muss ich diesen Dal-Parameter immer in alle Konstruktoren setzen oder? Würde schätzen, dass Ihre Poständerung dementsprechend ist. –