public DateTimeOffset GetLastModified(string module)
        {
            var cacheKey = CacheKey.With(GetType(), "LastModifiedDateTime", module);

            return(PlatformCache.GetOrCreateExclusive(cacheKey, (cacheEntry) =>
            {
                cacheEntry.AddExpirationToken(ChangesCollectorCacheRegion.CreateChangeTokenForKey(module));
                return DateTimeOffset.Now;
            }));
        }
        public async Task Publish <T>(T @event, CancellationToken cancellationToken = default(CancellationToken)) where T : class, IEvent
        {
            var module = GetModuleByType(@event.GetType());

            ChangesCollectorCacheRegion.ExpireTokenForKey(module);

            if (!EventSuppressor.EventsSuppressed && _routes.TryGetValue(@event.GetType(), out var handlers))
            {
                await Task.WhenAll(handlers.Select(handler => handler(@event, cancellationToken)));
            }
        }