在下面的代碼中,我有兩個選擇案例幾乎完全相同,而且所有案例幾乎完全相同。由於他們正在使用帶有不同參數的重載構造函數,所以我無法找到將它們放入單個函數的方法。有沒有什麼辦法都做到這一點(最好不使用泛型或反射,並與選項嚴格?)防止重複選擇案例
Sub Main() 'for testing, this currently converts csv to csv
inputPath = Environment.GetCommandLineArgs(1)
inputType = Environment.GetCommandLineArgs(2).ToUpper
outputPath = Environment.GetCommandLineArgs(3)
outputType = Environment.GetCommandLineArgs(4).ToUpper
'Grab Input
Select Case inputType
Case "CSV"
inputSpreadSheet = New CSV(inputPath)
Case "XLS"
inputSpreadSheet = New XLS(inputPath)
Case "XLSX"
Throw New NotImplementedException()
Case "PIPE"
Throw New NotImplementedException()
Case Else
Throw New Exception(inputType & " Is not a valid input type.")
End Select
'Convert Input to Intermediate Format
intermediateSpreadSheet = inputSpreadSheet.ToIntermediate()
'Convert Intermediate to output Format
Select Case outputType
Case "CSV"
outputSpreadSheet = New CSV(intermediateSpreadSheet)
Case "XLS"
outputSpreadSheet = New XLS(intermediateSpreadSheet)
Case "XLSX"
Throw New NotImplementedException()
Case "PIPE"
Throw New NotImplementedException()
Case Else
Throw New Exception(outputType & " Is not a valid output type.")
End Select
'Generate output file
outputSpreadSheet.Export(outputPath)
End Sub
因爲用於構造函數的參數是不同類型的每一個選擇塊的,我知道沒辦法將它們結合起來。
它並不真正重複,它測試2個不同的東西並創建不同的結果 – Plutonix