예제 #1
0
        public void if_any_exception_appears_on_disposing_events_root_container_should_be_dispose_finally()
        {
            ISomeManager  manager      = null;
            IRootResolver rootResolver = IocBuilder.New
                                         .UseAutofacContainerBuilder()
                                         .RegisterServices(r =>
            {
                r.Register <ISomeManager, SomeManager>();
                r.OnDisposing += (sender, args) =>
                {
                    manager = args.Context.Resolver.Resolve <ISomeManager>();
                    manager.Shutdown();

                    throw new HandlerException();
                };
            })
                                         .CreateResolver();

            Action act = () => rootResolver.Dispose();

            act.ShouldThrow <HandlerException>();

            Action containerDisposedAction = () => rootResolver.Container.Resolve <ISomeManager>();

            containerDisposedAction.ShouldThrow <ObjectDisposedException>();

            Action rootResolverDisposedAction = () => rootResolver.Resolve <ISomeManager>();

            rootResolverDisposedAction.ShouldThrow <ObjectDisposedException>();

            manager.ShutdownCount.ShouldBe(1);
        }
예제 #2
0
        public static void Main(string[] args)
        {
            EntityFrameworkProfiler.Initialize();

            Database.SetInitializer(new NullDatabaseInitializer <AnimalStoveDbContext>());
            Database.SetInitializer(new NullDatabaseInitializer <PersonStoveDbContext>());

            IRootResolver resolver = IocBuilder.New
                                     .UseAutofacContainerBuilder()
                                     .UseStove <StoveDemoBootstrapper>(false)
                                     .UseStoveEntityFramework()
                                     .UseStoveDapper()
                                     .UseStoveMapster()
                                     .UseStoveEventBus()
                                     .UseStoveDbContextEfTransactionStrategy()
                                     .UseStoveTypedConnectionStringResolver()
                                     .UseStoveNLog()
                                     .UseStoveBackgroundJobs()
                                     .UseStoveRedisCaching()
                                     .UseStoveRabbitMQ(configuration =>
            {
                configuration.HostAddress = "rabbitmq://localhost/";
                configuration.Username    = "******";
                configuration.Password    = "******";
                configuration.QueueName   = "Default";
                return(configuration);
            })
                                     .UseStoveHangfire(configuration =>
            {
                configuration.GlobalConfiguration
                .UseSqlServerStorage("Default")
                .UseNLogLogProvider();
                return(configuration);
            })
                                     .RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()))
                                     .CreateResolver();

            //var someDomainService = resolver.Resolve<SomeDomainService>();
            //someDomainService.DoSomeStuff();

            var productDomainService = resolver.Resolve <ProductDomainService>();

            productDomainService.DoSomeStuff();

            resolver.Dispose();

            EntityFrameworkProfiler.Shutdown();

            Console.ReadKey();
        }
예제 #3
0
 public void TearDown()
 {
     _resolver.Dispose();
 }
 public void Dispose()
 {
     Resolver?.Dispose();
 }
예제 #5
0
 public void Dispose()
 {
     LocalResolver?.Dispose();
 }