public void CanResolveMultiLevelConcreteHandler() { var resolver = new TasqHandlerResolver(); var handlers = resolver.GetAllHandlers(Assembly.GetExecutingAssembly()); Assert.IsTrue(handlers.Any(t => t == typeof(TestCommandWithMultipleHandlerHandler2))); Assert.IsFalse(handlers.Any(t => t == typeof(Base1Handler))); }
public static void AddTasqR(this IServiceCollection services, ServiceLifetime tasqRServiceLifeTime = ServiceLifetime.Scoped, params Assembly[] assemblies) { if (assemblies != null) { foreach (var a in assemblies) { if (!assemblyList.Contains(a)) { assemblyList.Add(a); } } } var resolver = new TasqHandlerResolver(); var handlers = resolver.GetAllHandlers(assemblies); foreach (var handler in handlers) { services.AddTransient(handler); } if (tasqRServiceLifeTime == ServiceLifetime.Scoped) { services.AddScoped <ITasqR>(p => { var msDIHandlerResolver = new MicrosoftDependencyTasqHandlerResolver(p); msDIHandlerResolver.RegisterFromAssembly(assemblyList.ToArray()); return(new TasqR(msDIHandlerResolver)); }); } else if (tasqRServiceLifeTime == ServiceLifetime.Transient) { services.AddTransient <ITasqR>(p => { var msDIHandlerResolver = new MicrosoftDependencyTasqHandlerResolver(p); msDIHandlerResolver.RegisterFromAssembly(assemblyList.ToArray()); return(new TasqR(msDIHandlerResolver)); }); } }