Передача аргументов в событиях - C#
Формулировка задачи:
Здравствуйте.
Помогите разложить знания по полочкам.
Хочу понять алгоритм передачи аргументов в событиях, а также прошу совета, как лучше организовывать события в проектировании.
Допустим, у нас есть такой код:
Как я понимаю путь, который проходят аргументы:
Событие SomeEvent() при вызове получает два аргумента, а точнее их получает делегат привязанный к событию, в данном случае встроенный в .Net стандартный делегат EventHandler, он в свою очередь передает аргументы методам, добавленный в очередь вызовов к событию. Все верно?
Не совсем понятно как наиболее рационально спроектировать класс, который содержит событие.
Пока я поступаю просто: делаю статические методы в классе-подписчике для обработки события, эти же методы добавляю в очередь вызовов в конструкторе класса-издателя. Как можно поступить более рационально?
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleEvents { // Класс-издатель события class SampleClass { public event EventHandler SomeEvent; public void RunEvent() { SomeEvent += Listener.Handler; // Добавляем в очередь вызовов SomeEvent(this, EventArgs.Empty); // <-------------- Куда отсюда передаются аргументы??? } } // Класс-подписчик class Listener { public static void Handler(object source, EventArgs nothing) { Console.WriteLine("Событие получено! Источник: " + source); } } class Program { static void Main(string[] args) { SampleClass MyObj = new SampleClass(); MyObj.RunEvent(); } }
Решение задачи: «Передача аргументов в событиях»
textual
Листинг программы
humanOne.WasDamaged += HumanOne_WasDamaged;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д