/// Scan the given assembly or the calling assembly for MessageHandlers /// and register them in the .NET Core IoC. /// Fishbus framework classes are also registered /// <param name="assembly">Assembly that contains the MessageHandlers</param> public static IServiceCollection ConfigureMessaging(this IServiceCollection services, Assembly assembly = null) { assembly = assembly ?? Assembly.GetCallingAssembly(); MessageHandlerTypes .GetAll(assembly) .ToList() .ForEach(t => services.AddTransient(t)); services .AddSingleton <MessagingConfiguration>() .AddSingleton <MessageHandlerRegistry>(p => new MessageHandlerRegistry(() => MessageHandlerTypes.GetAll(assembly))) .AddHostedService <MessagingService>(); return(services); }
private static IServiceCollection ConfigureMessaging(this IServiceCollection services, LogCorrelationHandler logCorrelationHandler, Assembly[] assemblies) { if (logCorrelationHandler == null) { throw new ArgumentNullException(nameof(logCorrelationHandler)); } MessageHandlerTypes .GetAll(assemblies) .ToList() .ForEach(t => services.AddTransient(t)); services .AddSingleton <MessagingConfiguration>() .AddSingleton(p => new MessageHandlerRegistry(() => MessageHandlerTypes.GetAll(assemblies))) .AddSingleton(logCorrelationHandler) .AddHostedService <MessagingService>(); return(services); }