some changes
This commit is contained in:
parent
4ec9720541
commit
b47bac67ca
37 changed files with 397 additions and 190 deletions
24
Femto.Common/Integration/IEventHandler.cs
Normal file
24
Femto.Common/Integration/IEventHandler.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
namespace Femto.Common.Integration;
|
||||
|
||||
public interface IEventHandler
|
||||
{
|
||||
Task Handle(IEvent evt, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
public abstract class EventHandler<T> : IEventHandler
|
||||
where T : IEvent
|
||||
{
|
||||
protected abstract Task Handle(T evt, CancellationToken cancellationToken);
|
||||
|
||||
public async Task Handle(IEvent evt, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (evt is not T typedEvt)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Event {evt.GetType()} is not of type {typeof(T)}"
|
||||
);
|
||||
}
|
||||
|
||||
await Handle(typedEvt, cancellationToken);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue