public static IEventsBuilder HandlersFromAssemblyOf(this IEventsBuilder me, Type typeOfAssembly) { foreach (var handler in typeOfAssembly.Assembly.GetTypes().Where(t => t.IsSubclassOfRawGeneric(typeof(IEventHandler <>)))) { HandlersFromType(me, handler); } return(me); }
public static IEventsBuilder HandlersFromType(this IEventsBuilder me, Type typeOfEventHandlers) { foreach (var inter in typeOfEventHandlers.GetInterfaces().Where(t => t.IsSubclassOfRawGeneric(typeof(IEventHandler <>)))) { me.FuxionBuilder.Services.AddScoped(inter, typeOfEventHandlers); if (me.FuxionBuilder.TypeKeyDirectory.ContainsKey(inter.GetGenericArguments()[0].GetTypeKey())) { if (me.FuxionBuilder.TypeKeyDirectory[inter.GetGenericArguments()[0].GetTypeKey()] != inter.GetGenericArguments()[0]) { throw new InvalidProgramException(""); } } else { me.FuxionBuilder.TypeKeyDirectory.Register(inter.GetGenericArguments()[0]); } } return(me); }
public static void UseBus <TBus>(this IEventsBuilder builder) where TBus : IEventBus { builder.Services.Replace(ServiceDescriptor.Singleton(typeof(IEventBus), typeof(TBus))); }
public static void UseBus(this IEventsBuilder builder, Func <IServiceProvider, IEventBus> implementationFactory) { builder.Services.Replace(ServiceDescriptor.Singleton(implementationFactory)); }
public EventsController(ApplicationDbContext db, IEventsBuilder eventBuilder) { _db = db; _eventBuilder = eventBuilder; }
public static IEventsBuilder Subscribe <TEvent>(this IEventsBuilder me, Func <IServiceProvider, IEventSubscriber> eventSubscriber) where TEvent : Event { me.FuxionBuilder.Services.AddTransient(sp => new EventSubscription(typeof(TEvent))); return(me); }
public static IEventsBuilder HandlersFromAssemblyOf <T>(this IEventsBuilder me) => HandlersFromAssemblyOf(me, typeof(T));
public static IEventsBuilder HandlersFromType <T>(this IEventsBuilder me) => HandlersFromType(me, typeof(T));
public HomeController(IEventsBuilder eventsBuilder, ICalendarBuilder calendarBuilder) { _eventsBuilder = eventsBuilder; _calendarBuilder = calendarBuilder; }