Example #1
0
        protected virtual ContainerManager RegisterDependencies()
        {
            var builder    = new ContainerBuilder();
            var container  = builder.Build();
            var typeFinder = CreateTypeFinder();

            _containerManager = new ContainerManager(container);

            // core dependencies
            builder = new ContainerBuilder();
            builder.RegisterInstance(this).As <IEngine>();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>();

            // Autofac
            var lifetimeScopeAccessor = new DefaultLifetimeScopeAccessor(container);
            var lifetimeScopeProvider = new DefaultLifetimeScopeProvider(lifetimeScopeAccessor);

            builder.RegisterInstance(lifetimeScopeAccessor).As <ILifetimeScopeAccessor>();
            builder.RegisterInstance(lifetimeScopeProvider).As <ILifetimeScopeProvider>();

            var dependencyResolver = new AutofacDependencyResolver(container, lifetimeScopeProvider);

            builder.RegisterInstance(dependencyResolver);
            DependencyResolver.SetResolver(dependencyResolver);

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            // Register dependencies provided by other assemblies
            builder = new ContainerBuilder();
            var registrarTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var registrarInstances = new List <IDependencyRegistrar>();
            foreach (var type in registrarTypes)
            {
                registrarInstances.Add((IDependencyRegistrar)Activator.CreateInstance(type));
            }

            // Sort
            registrarInstances = registrarInstances.OrderBy(t => t.Order).ToList();
            foreach (var registrar in registrarInstances)
            {
                var type = registrar.GetType();
                registrar.Register(builder, typeFinder, PluginManager.IsActivePluginAssembly(type.Assembly));
            }

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            return(_containerManager);
        }
Example #2
0
        protected virtual ContainerManager RegisterDependencies()
        {
            var builder    = new ContainerBuilder();
            var container  = builder.Build();
            var typeFinder = CreateTypeFinder();

            // core dependencies
            builder = new ContainerBuilder();
            builder.RegisterInstance(this).As <IEngine>();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>();

            // Autofac
            var lifetimeScopeAccessor = new DefaultLifetimeScopeAccessor(container);
            var lifetimeScopeProvider = new DefaultLifetimeScopeProvider(lifetimeScopeAccessor);

            builder.RegisterInstance(lifetimeScopeAccessor).As <ILifetimeScopeAccessor>();
            builder.RegisterInstance(lifetimeScopeProvider).As <ILifetimeScopeProvider>();

            var dependencyResolver = new AutofacDependencyResolver(container, lifetimeScopeProvider);

            builder.RegisterInstance(dependencyResolver);
            DependencyResolver.SetResolver(dependencyResolver);

            builder.Update(container);

            // register dependencies provided by other assemblies
            builder = new ContainerBuilder();
            var registrarTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var registrarInstances = new List <IDependencyRegistrar>();

            foreach (var type in registrarTypes)
            {
                registrarInstances.Add((IDependencyRegistrar)Activator.CreateInstance(type));
            }
            // sort
            registrarInstances = registrarInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            foreach (var registrar in registrarInstances)
            {
                // true: repersent this line of code /PluginManager.IsActivePluginAssembly(registrar.GetType().Assembly)/
                registrar.Register(builder, typeFinder, true);
            }
            builder.Update(container);

            return(new ContainerManager(container));
        }
Example #3
0
        protected virtual ContainerManager RegisterDependencies()
        {
            var builder    = new ContainerBuilder();
            var container  = builder.Build();
            var typeFinder = CreateTypeFinder();

            _containerManager = new ContainerManager(container);

            // core dependencies
            builder = new ContainerBuilder();
            builder.RegisterInstance(this).As <IEngine>();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>();

            // Autofac
            var lifetimeScopeAccessor = new DefaultLifetimeScopeAccessor(container);
            var lifetimeScopeProvider = new DefaultLifetimeScopeProvider(lifetimeScopeAccessor);

            builder.RegisterInstance(lifetimeScopeAccessor).As <ILifetimeScopeAccessor>();
            builder.RegisterInstance(lifetimeScopeProvider).As <ILifetimeScopeProvider>();

            var dependencyResolver = new AutofacDependencyResolver(container, lifetimeScopeProvider);

            builder.RegisterInstance(dependencyResolver);
            DependencyResolver.SetResolver(dependencyResolver);

            // Logging dependencies should be available very early
            builder.RegisterModule(new LoggingModule());

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            // Propagate logger
            var logger = container.Resolve <ILoggerFactory>().GetLogger("SmartStore.Bootstrapper");
            this.Logger = logger;
            ((AppDomainTypeFinder)typeFinder).Logger = logger;

            // Register dependencies provided by other assemblies
            builder = new ContainerBuilder();
            var registrarTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var registrarInstances = new List <IDependencyRegistrar>();
            foreach (var type in registrarTypes)
            {
                registrarInstances.Add((IDependencyRegistrar)Activator.CreateInstance(type));
            }

            // Sort
            registrarInstances = registrarInstances.OrderBy(t => t.Order).ToList();
            foreach (var registrar in registrarInstances)
            {
                var type = registrar.GetType();
                logger.DebugFormat("Executing dependency registrar '{0}'", type.FullName);
                registrar.Register(builder, typeFinder, PluginManager.IsActivePluginAssembly(type.Assembly));
            }

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            return(_containerManager);
        }