次のコードでは、2つのSelect Casesがほぼ同一であり、さらにすべてのケースがほぼ同じです。彼らは異なるパラメータを持つ多重定義されたコンストラクタを使用しているので、それらを単一の関数に入れる方法を見つけることはできません。すべてでこれを行うにはどのような方法は、(理想的に厳しいジェネリックまたは反射し、オプションでを使用しなくても?)がある繰り返しの選択の防止
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