Добавлен Cheezie,
опубликован
Хотел бы поделиться самописной системой управления событиями.
Код можно глянуть тут: github.com/AlexSolari/eve
Код можно глянуть тут: github.com/AlexSolari/eve
Работа с библиотекой происходит через класс EventHandler.
Просто создайте инстанс и храните его где вам удобно (желательно в DI контейнере, или в синглтоне если вы поехавший)
Чтобы создать событие, создайте класс, который реализует либо IContextfulEvent, либо IContextlessEvent для событий с контекстом и без соответственно.
Просто создайте инстанс и храните его где вам удобно (желательно в DI контейнере, или в синглтоне если вы поехавший)
Чтобы создать событие, создайте класс, который реализует либо IContextfulEvent, либо IContextlessEvent для событий с контекстом и без соответственно.
Если вы хотите, чтобы иметь доступ к контексту в обработчике события, вам нужно реализовать IContextfulEvent и создать класс контекста, который будет реализовывать IEventContext.
Пример:
Пример:
class Event : IContextfulEvent {}
class EventContext: IEventContext<Event>
{
public int MyData = 42;
}
Для подписки на событие используется метод EventHandler.Subscribe.
Можно юзать двумя способами: с классом, реализующим интерфейс ISubscription, и с анонимным методом:
Можно юзать двумя способами: с классом, реализующим интерфейс ISubscription, и с анонимным методом:
ISubscription<Event, EventContext> subscription = new MySubscription();
handler.Subscribe(subscription);
handler.Subscribe<Event, EventContext>(ctx => {});
Метод EventHandler.Subscribe возвращает ISubscription, поэтому при необходимости вы можете использовать его позже с методом EventHandler.Unsubscribe.
Чтобы запустить событие, вам нужно использовать метод EventHandler.Dispatch.
Пример:
Пример:
handler.Dispatch<ContextlessEvent>();
handler.Dispatch<ContextfulEvent, Context>(new Context ());
Спасибо за внимание, с радостью почитаю ваши комменты и отзывы.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Комментарии пока отсутcтвуют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.