public IEventSchema GetSchema()
        {
            var schema = new EventSchema();

            var entityTypes = typeof(IEntitiesAssembly).Assembly
                              .GetTypes()
                              .Where(x => !x.IsAbstract && !x.IsInterface && typeof(IEntity).IsAssignableFrom(x))
                              .ToList();

            foreach (var entityType in entityTypes)
            {
                var @event = new EventBuilder()
                             .ForEntity(entityType)
                             .WithEvent <AuditEvent>()
                             .WithEvent <ValidationEvent>()
                             .WithEvent <VersioningEvent>()
                             .Build();
                schema.Add(@event);
            }

            var imageProcessorEvent = new EventBuilder()
                                      .ForEntity <Product>()
                                      .WithEvent <ImageProcessorEvent>()
                                      .Build();

            schema.Add(imageProcessorEvent);

            return(schema);
        }
        public IEventSchema GetSchema()
        {
            var schema = new EventSchema();

            var entityTypes = typeof(Entity <>).Assembly
                              .GetTypes()
                              .Where(x => !x.IsInterface && !x.IsAbstract && typeof(IEntity <Guid>).IsAssignableFrom(x))
                              .ToList();

            foreach (var entityType in entityTypes)
            {
                var @event = new EventBuilder()
                             .ForEntity(entityType)
                             .WithEvent(typeof(AuditEvent))
                             .WithEvent(typeof(ValidationEvent))
                             .WithEvent(typeof(VersioningEvent))
                             .Build();
                schema.Add(@event);
            }

            return(schema);
        }