2016-07-21 4 views
1

Я хочу написать код, который выглядит следующим образом:Наследование StreamWriter с новым именем

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 

Однако я вынужден сделать это (потому что первое утверждение Sub New должно быть базовый конструктор):

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 

Есть ли способ «вокруг» этого? В этом случае все в порядке, но мне хотелось бы сделать больше обработки, которая не поместилась бы на одной строке.

+0

LogsDirectory переменная должна иметь свое значение, присвоенные прежде чем он будет использоваться. Похоже, что это автоматический код, но это всего лишь синтаксический сахар, конструктор позаботится об этом. Но подождите, вы пишете конструктор. Яйцо должно идти перед цыпленком. То же самое относится к MyBase.New(). –

ответ

1

Вы можете добиться того, что вы хотите с помощью функции так долго, как это Shared (LogsDirectory также должны быть Shared)

следующие компилирует:

Public Class LogFile 
    Inherits StreamWriter 

    Public Sub New(shortName As String) 
     MyBase.New(InitFunction(shortName)) 
    End Sub 

    Private Shared LogsDirectory As String = Application.StartupPath & "\" & "logs\" 

    Private Shared Function InitFunction(shortname As String) As String 
     Dim fullFilePath = LogsDirectory & shortname & "_" & Format(Now, "HHmmss") & ".log" 
     Return fullFilePath 
    End Function 
End Class 
+0

Извините, в упрощении моего кода, чтобы содержать только соответствующие элементы, я пропустил критический элемент этого - я отредактировал свой вопрос. – 8128

+0

См. Мое редактирование –