Метод извлечения с параметрами (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 метод.

Другие вопросы по тегам