События и возвращаемые методы - C#
Формулировка задачи:
Уважаемые коллеги!
Ситуация в следующем:
есть необходимость открывать xml, xls, xlsx файлы и записывать их содержимое в List<>
преобразование делаю в отдельном классе Class_2
из основного класса Class_1 передаю путь к файлу, так же хочу подписаться на событий в Class_2 на счётчик обработанных строк из заданного файла
подписываюсь на событие в Class_2, событие изменение счётчика обработанных строк загруженного файла.
Так вот событие есть в методе
Листинг программы
- Class_1
- {
- .......
- Class_2 cl_2=new Class_2();
- cl_2.ConvertFile(path);
- .......
- }
- Class_2
- {
- .......
- ConvertFile(string path)
- {
- switch (Path.GetExtension(path))
- {
- case ".XLS":
- return xls_pars(path);
- case ".XML":
- return xml_pars(path);
- case ".XLSX":
- return xlsx_pars(path);
- default:
- break;
- }
- }
- xls_pars(string path)
- {
- .......
- }
- }
ConvertFile()
, а после прохождения switch---case событие в методеxls_pars()
становитсяNULL
что я делаю не так? почему такая схема - я хотел, как в книжках пишут, обработку файла в отдельный класс поместить с входным параметром "путь к выбранному файлу
", а на выходе из класса массивLIST<DataArray>
Заранее спасибо!Решение задачи: «События и возвращаемые методы»
textual
Листинг программы
- public partial class Form1 : Form
- {
- ConvertSelectetdFile csf = new ConvertSelectetdFile();
- List<DataArray> workList_2 = new List<DataArray>();
- private void button1_Click(object sender, EventArgs e)
- {
- workList_2.Clear();
- worklist_2.AddRange(csf.convertSelectetdFile(path);
- }
- }
- class ConvertSelectetdFile
- {
- private delegate List<DataArray> ConvertFile(string path);
- public ConvertSelectetdFile()
- {
- _dictionary = new Dictionary<string, ConvertFile>
- {
- {".xls", pars_xls },
- {".xlsx", pars_xlsx },
- {".xml", pars_xml },
- };
- }
- public List<DataArray> convertSelectetdFile(string file)
- {
- return _dictionary[Path.GetExtension(file)] (file);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д