Использование замыканий
От: AlexDP Украина  
Дата: 09.09.10 11:17
Оценка:
Есть три таких метода (на самом деле их может быть еще больше.)

private void bExportExcel_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
        {
            TableView viewToWorkWith = GetViewToExportOrPrint();
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName = "Document"; // Default file name
            dlg.DefaultExt = ".xls"; // Default file extension
            dlg.Filter = ".xls|*.xls"; // Filter files by extension

            Nullable<bool> result = dlg.ShowDialog();

            // Process save file dialog box results
            if (result == true)
            {
                // Save document
                string filename = dlg.FileName;

                viewToWorkWith.ExportToXls(filename, new DevExpress.XtraPrinting.XlsExportOptions());

            }
        }

        private void bExportHtml_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
        {
            TableView viewToWorkWith = GetViewToExportOrPrint();
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName = "Document"; // Default file name
            dlg.DefaultExt = ".html"; // Default file extension
            dlg.Filter = ".html|*.html"; // Filter files by extension

            Nullable<bool> result = dlg.ShowDialog();

            // Process save file dialog box results
            if (result == true)
            {
                // Save document
                string filename = dlg.FileName;

                viewToWorkWith.ExportToHtml(filename, new DevExpress.XtraPrinting.HtmlExportOptions());

            }
        }

        private void bExportPdf_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
        {
            TableView viewToWorkWith = GetViewToExportOrPrint();
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName = "Document"; // Default file name
            dlg.DefaultExt = ".pdf"; // Default file extension
            dlg.Filter = ".pdf|*.pdf"; // Filter files by extension

            Nullable<bool> result = dlg.ShowDialog();

            // Process save file dialog box results
            if (result == true)
            {
                // Save document
                string filename = dlg.FileName;

                viewToWorkWith.ExportToPdf(filename, new DevExpress.XtraPrinting.PdfExportOptions());

            }


Как-то можно их отрефакторить, чтобы был один базовый метод, который бы и вызывался три раза с разными параметрами?

Сложность тут в том, что методы типа viewToWorkWith.ExportToPdf(filename, new DevExpress.XtraPrinting.PdfExportOptions()); отличаются сигнатурой и filename становится известным слишком поздно .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.