События и возвращаемые методы - C#

Узнай цену своей работы

Формулировка задачи:

Уважаемые коллеги! Ситуация в следующем: есть необходимость открывать xml, xls, xlsx файлы и записывать их содержимое в List<> преобразование делаю в отдельном классе Class_2 из основного класса Class_1 передаю путь к файлу, так же хочу подписаться на событий в 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)
            {
           .......
            }
}
подписываюсь на событие в Class_2, событие изменение счётчика обработанных строк загруженного файла. Так вот событие есть в методе

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);
                }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы