Ich habe eine Basisklasse, die eine ziemlich große Anzahl von Parametern in seinem neuen Konstruktor enthält. Ich habe 7 Unterklassen, die die Super-Basisklasse erben. Meine Frage/Problem ist, alle Unterklassen verwenden die gleichen Werte für die meisten Parameter im neuen Konstruktor der Basisklasse und diese Unterklassen können nacheinander aufgerufen werden. Ich möchte die allgemeinen Werte für die Oberklasse auffüllen und dann diese für jede der Unterklassen verwenden, aber ich kann mir keinen guten Weg vorstellen, dies zu tun. Wenn ich herausfinden könnte, wie das geht, müsste ich nicht alle diese Parameter im MyBase.New-Aufruf für jede Unterklasse übergeben. Ich werde versuchen, mit einigem Code zu veranschaulichen ....VB.Net OOP Frage - Superklasse, MyBase.net und Konstruktor Parameter
Public Class BaseRequest
Public Sub New(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String, ByVal param4 As String, ByVal param5 As String, ByVal param6 As String, ByVal param7 As String, ByVal param8 As String, ByVal param9 As String, ByVal param10 As String)
'Private Level Variables Assigned Here'
End Sub
End Class
Public Class SubClass1
Inherits BaseRequest
Public Sub New(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String, ByVal param4 As String, ByVal param5 As String, ByVal param6 As String, ByVal param7 As String, ByVal param8 As String, ByVal param9 As String, ByVal param10 As String)
MyBase.New(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)
End Sub
End Class
Public Class SubClass2
Inherits BaseRequest
Public Sub New(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String, ByVal param4 As String, ByVal param5 As String, ByVal param6 As String, ByVal param7 As String, ByVal param8 As String, ByVal param9 As String, ByVal param10 As String)
MyBase.New(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)
End Sub
End Class
Public Class SubClass3
Inherits BaseRequest
Public Sub New(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String, ByVal param4 As String, ByVal param5 As String, ByVal param6 As String, ByVal param7 As String, ByVal param8 As String, ByVal param9 As String, ByVal param10 As String)
MyBase.New(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)
End Sub
End Class
Private Sub CallClasses
If CallClass1 Then
Dim sClass1 As New SubClass1(Param1Value, Param2Value, Param3Value, Param4Value, Param5Value, Param6Value, Param7Value, Param8Value, Param9Value, Param10Value)
End If
If CallClass2 Then
Dim sClass2 As New SubClass2(Param1Value, Param2Value, Param3Value, Param4Value, Param5Value, Param6Value, Param7Value, Param8Value, Param9Value, Param10Value)
End If
If CallClass3 Then
Dim sClass3 As New SubClass3(Param1Value, Param2Value, Param3Value, Param4Value, Param5Value, Param6Value, Param7Value, Param8Value, Param9Value, Param10Value)
End If
End Sub
Ich mag würde die redundanten Anrufe loswerden zu „MyBase.New“ in jeder Unterklasse ist und die Parameter wie ich neue bis zu bevölkern die Aufrufe an die Unterklassen. Mit anderen Worten, machen Sie so etwas ....
Dim MySuperClass as New BaseRequest(Param1Value, Param2Value, Param3Value, Param4Value, Param5Value, Param6Value, Param7Value, Param8Value, Param9Value, Param10Value)
If CallClass1 Then
Dim sClass1 As SubClass1
sClass1 = MySuperClass 'This Downcasting doesn't work, which is my problem.
End If
If CallClass2 Then
Dim sClass2 As SubClass2
sClass2 = MySuperClass 'This Downcasting doesn't work, which is my problem.
End If
If CallClass3 Then
Dim sClass3 As SubClass3
sClass3 = MySuperClass 'This Downcasting doesn't work, which is my problem.
End If
Ich hoffe, das ist verständlich. Was ist der beste Weg, dies zu tun?
Die Codeformatierung behandelt das VB-Kommentarzeichen nicht gut. Beenden Sie einfach mit einem anderen und es wird es als eine Schnur behandeln. Oder benutze einfach // und lasse die ' –
Danke weg. Das wusste ich nicht. –
'' // wird noch kompiliert, der Formatierer wird behandelt als Kommentar und nicht als String-Literal, und es funktioniert auch, wenn der Kommentar zusätzliche Apostroph-Zeichen enthält –