Подписаться на событие изменения коллекции - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д