Подписаться на событие изменения коллекции - C#

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

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

Собственно как? Имеются такие коллекции
List<string> scanUrls = new List<string>();
        HashSet<string> resUrls = new HashSet<string>();
при каждом изменении их элементов (добавление/удаление и т.д.) должен отрабатывать какой либо метод

Решение задачи: «Подписаться на событие изменения коллекции»

textual
Листинг программы
    class Program
    {
        static void Main(string[] args)
        {
            ScanUrls scanUrls = new ScanUrls();
            scanUrls.Event += scanUrls_Event;         
 
           //далее работаем как обычно с List
            scanUrls.Add("1");
            scanUrls.Add("2");
            scanUrls.Remove("2");
            scanUrls.Reverse();
        }
 
        static void scanUrls_Event(object sender, ScanUrlsEvenArgs e)
        {
            switch (e.Message)
            { 
                case "Add":
                    Console.WriteLine("Событие Add для scanUrls");
                    break;
                case "Remove":
                    Console.WriteLine("Событие Remove для scanUrls");
                    break;
            }
        }
    }
   
    class ScanUrls : List<string>
    {
        public event EventHandler<ScanUrlsEvenArgs> Event;
        
        new public void Add(string item)
        {
            base.Add(item);
            OnEvent("Add");
        }
 
        new public void Remove(string item)
        {
            base.Remove(item);
            OnEvent("Remove");
 
        }
 
        private void OnEvent(string message)
        {
            if (Event != null)
                Event(this,new ScanUrlsEvenArgs(message));
        }                
    }
 
    class ScanUrlsEvenArgs : EventArgs
    {
       public ScanUrlsEvenArgs(string message)
        {
            Message = message;
        }
 
       public string Message { get; private set; }
 
    }

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


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

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

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