public void AddSubscriber(IEventHandler eventHandler)
        {
            NullGuard.NotNull(eventHandler, nameof(eventHandler));

            TryAdd(eventHandler, eventHandler.GetHashCode());
        }
        public NullableDateTimeResolver(Func <TSource, DateTime?> valueGetter)
        {
            NullGuard.NotNull(valueGetter, nameof(valueGetter));

            _valueGetter = valueGetter;
        }
        public static IServiceCollection AddResolvers(this IServiceCollection serviceCollection)
        {
            NullGuard.NotNull(serviceCollection, nameof(serviceCollection));

            return(serviceCollection.AddSingleton <IAcmeChallengeResolver, AcmeChallengeResolver>());
        }
        public static IServiceCollection AddEventPublisher(this IServiceCollection serviceCollection)
        {
            NullGuard.NotNull(serviceCollection, nameof(serviceCollection));

            return(serviceCollection.AddScoped <IEventPublisher, EventPublisher>());
        }
        public static IServiceCollection AddQueryBus(this IServiceCollection serviceCollection)
        {
            NullGuard.NotNull(serviceCollection, nameof(serviceCollection));

            return(serviceCollection.AddTransient <IQueryBus, QueryBus>());
        }
        public QueryBus(IEnumerable <IQueryHandler> queryHandlers)
        {
            NullGuard.NotNull(queryHandlers, nameof(queryHandlers));

            _queryHandlers = queryHandlers;
        }