Je veux écrire un code qui ressemble à ceci:Héritant StreamWriter avec le nouveau nom de fichier
Public Class LogFile
Inherits StreamWriter
Private LogsDirectory As String = Application.StartupPath & "\" & "logs\"
Public Sub New(shortName As String)
Dim fullFilePath As String = LogsDirectory & shortName & "_" & Format(Now, "HHmmss") & ".log"
MyBase.New(fullFilePath)
End Sub
End Class
Cependant, je suis obligé de le faire (parce que la première déclaration de Sub New
doit être à un constructeur de base):
Public Class LogFile
Inherits StreamWriter
Public Sub New(shortName As String)
MyBase.New(Application.StartupPath & "\" & "logs\" & shortName & "_" & Format(Now, "HHmmss") & ".log")
End Sub
End Class
Y at-il un moyen de contourner ce problème? Dans ce cas, c'est correct, mais je pourrais très bien faire plus de traitement qui ne correspondrait pas à une seule ligne.
La variable LogsDirectory doit avoir sa valeur attribuée avant qu'il ne soit utilisable. On dirait que c'est automagique dans le code, mais c'est juste du sucre de syntaxe, le constructeur s'occupe de ça. Mais attendez, vous écrivez le constructeur. L'œuf doit aller avant le poulet. La même chose s'applique à MyBase.New(). –