Events usage

Dispatching events follows the same pattern as the previous page.

Event creation

First, to create an event you have to implement the IEvent interface.

For example:

public class MyEvent:IEvent
{
   public string EventData { get; set; }
}

Note

In this class you can put any info that you need for your event.

Handler creation

Second, you have to create a handler for the above event. For this, you have to implement the IEventHandler<TEvent> generic interface.

/// <summary>
/// Interface for implement an event handler for an event
/// </summary>
/// <typeparam name="TEvent">Event type</typeparam>
public interface IEventHandler<in TEvent> where TEvent : IEvent
{
    /// <summary>
    /// Handle the event
    /// </summary>
    /// <param name="event">Event data</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task Handle(TEvent @event, CancellationToken cancellationToken);
}

For example:

public class MyEventHandler : IEventHandler<MyEvent>
{
    public Task Handle(MyEvent @event, CancellationToken cancellationToken)
    {
        //Example operation
        Console.WriteLine("MyEvent Event handler " + @event.EventData );

        return Task.CompletedTask;
    }
}

Tip

Remember, you can have multiple handlers for an event.

Dispatching through the mediator

Third, dispatch the event through the mediator:

MyEvent @event = new MyEvent() { EventData = "SomeData" };

await _mediator.Dispatch(@event, cancellationToken);