/// <summary>
        /// Add serviceant to your dotnet core ioc
        /// </summary>
        /// <param name="this"></param>
        /// <param name="handlerAssemblies">the assemblies which containg handlers, those will be registered to container</param>
        public static void AddServiceAnt(this IServiceCollection @this, params Assembly[] handlerAssemblies)
        {
            _handlerAssemblies = handlerAssemblies;

            var subcriptionsManager = new InMemorySubscriptionsManager();
            var requestManager      = new InMemoryRequestHandlerManager();

            RegisterHandlers(subcriptionsManager, requestManager);
            @this.AddSingleton <ISubscriptionManager>(subcriptionsManager);
            @this.AddSingleton <IRequestHandlerManager>(requestManager);

            @this.AddTransient <IIocResolver>(serviceProvider =>
            {
                return(new IocResolver(serviceProvider));
            });
            @this.AddSingleton <IServiceBus, InProcessServiceBus>();


            var allHandlerTypes = _handlerAssemblies.SelectMany(p => p.ExportedTypes).Where(p => typeof(IHandler).IsAssignableFrom(p));

            foreach (var aHandlerType in allHandlerTypes)
            {
                @this.AddTransient(aHandlerType);
            }
        }
Example #2
0
        /// <summary>
        /// Intall dependenies and register handler function
        /// </summary>
        /// <param name="builder"></param>
        protected override void Load(ContainerBuilder builder)
        {
            var subcriptionsManager = new InMemorySubscriptionsManager();
            var requestManager      = new InMemoryRequestHandlerManager();

            RegisterHandlers(subcriptionsManager, requestManager);
            builder.RegisterInstance(subcriptionsManager).As <ISubscriptionManager>().SingleInstance();
            builder.RegisterInstance(requestManager).As <IRequestHandlerManager>().SingleInstance();

            builder.Register <IIocResolver>(ctx =>
            {
                return(new IocResolver(ctx.Resolve <IComponentContext>()));
            });

            builder.RegisterType <InProcessServiceBus>().AsSelf().As <IServiceBus>().SingleInstance();

            builder.RegisterAssemblyTypes(_handlerAssemblies).AsSelf();
        }