Передача аргументов в событиях - 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;