Example #1
0
        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)));
        }
Example #2
0
        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));
                });
            }
        }