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