public void Publish <TEvent>(TEvent evnt) where TEvent : IEvent { if (evnt == null) { throw new ArgumentNullException(nameof(evnt)); } var handlers = eventHandlerFactory.CreateHandlers <TEvent>(); foreach (var handler in handlers) { Handle(evnt, handler); } }