Метод извлечения с параметрами (C#, VS 2017)
У меня есть код ниже при нажатии кнопки:
private void Button_Click_1(object sender, RoutedEventArgs e){
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "CSV File|*.csv";
saveFileDialog.Title = "Save CSV File";
saveFileDialog.FileName = newCSVName;
saveFileDialog.InitialDirectory = System.IO.Path.GetFullPath(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
saveFileDialog.RestoreDirectory = true;
if (saveFileDialog.ShowDialog().GetValueOrDefault(false)){
if (saveFileDialog.FileName != ""){
ParseStream(path, OutputResults.OUTPUT_TYPE_FILE, null, null, saveFileDialog.FileName);
}}}
Я пытаюсь извлечь его в новый метод, потому что во второй кнопке у меня уже тот же код, только одна, нижняя строка является разностной (имеет разные параметры):
ParseStream(path, OutputResults.OUTPUT_TYPE_SQLINSERT, tableName.Text, null, saveFileDialog.FileName);
После извлечения на новый метод я уже сделал:
private void SaveFileD(string nFilter, string nTitle, string newCSVName){
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = nFilter;
saveFileDialog.Title = nTitle;
saveFileDialog.FileName = newCSVName;
saveFileDialog.InitialDirectory = System.IO.Path.GetFullPath(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
saveFileDialog.RestoreDirectory = true;
if (saveFileDialog.ShowDialog().GetValueOrDefault(false)){
if (saveFileDialog.FileName != ""){
//.....
}}
И новый код нажатия кнопки:
private void Button_Click_1(object sender, RoutedEventArgs e){
string nFilter = "CSV File|*.csv";
string nTitle = "Save CSV File";
string newCSVName = newCSVName;
SaveFileD(nFilter, nTitle, newCSVName);}
Но я не знаю, что делать с методом ParseStream, так как я передаю разные параметры в двух случаях.
2 ответа
Решение
public void MyAwesomeMethodThatDoesStuff(string path, OutputResults outputResults, string someParamater = null)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "CSV File|*.csv";
saveFileDialog.Title = "Save CSV File";
saveFileDialog.FileName = newCSVName;
saveFileDialog.InitialDirectory = System.IO.Path.GetFullPath(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
saveFileDialog.RestoreDirectory = true;
if (saveFileDialog.ShowDialog().GetValueOrDefault(false))
{
if (saveFileDialog.FileName != "")
{
ParseStream(path, outputResults, someParamater, null, saveFileDialog.FileName);
}
}
}
использование
MyAwesomeMethodThatDoesStuff(@"D:\MyAwesomePath", OutputResults.OUTPUT_TYPE_FILE, tableName.Text)
Или же
MyAwesomeMethodThatDoesStuff(@"D:\MyAwesomePath", OutputResults.OUTPUT_TYPE_FILE)
Немного неясно, что вы спрашиваете, но похоже, что вы хотите изменить аргументы, которые вы передаете ParseStream
метод в соответствии с текущим контекстом в SaveFileD
метод.