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); }
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)); }
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); }