예제 #1
0
        public static void HotSetup(this IServiceCollection services, IMvcBuilder mvcBuilder)
        {
            _serviceCollection = services;
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddSingleton <IMvcModuleSetup, MvcModuleSetup>();
            services.AddSingleton <IServiceCollection>(services);
            // services.AddScoped<IDbHelper, DbHelper>();
            services.AddSingleton <IActionDescriptorChangeProvider>(InBizActionDescriptorChangeProvider.Instance);
            services.AddSingleton <IReferenceContainer, DefaultReferenceContainer>();
            services.AddSingleton <IReferenceLoader, DefaultReferenceLoader>();
            services.AddSingleton(InBizActionDescriptorChangeProvider.Instance);
            // IMvcBuilder mvcBuilder = services.AddMvc();
            ServiceProvider provider = services.BuildServiceProvider();

            using (IServiceScope scope = provider.CreateScope())
            {
                var contextProvider = new CollectibleAssemblyLoadContextProvider();
                var context         = contextProvider.Get("DemoPlugin1", services, mvcBuilder.PartManager, scope);
                if (context != null)
                {
                    PluginsLoadContexts.Add("DemoPlugin1", context);
                }
            }
            AssemblyLoadContextResoving();
            services.Configure <RazorViewEngineOptions>(o =>
            {
                o.AreaViewLocationFormats.Add("/Modules/{2}/Views/{1}/{0}" + RazorViewEngine.ViewExtension);
                o.AreaViewLocationFormats.Add("/Views/Shared/{0}.cshtml");
            });

            services.Replace <IViewCompilerProvider, InBizViewCompilerProvider>();
        }
예제 #2
0
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.TryAddSingleton <InBizModuleLoader>();
            context.Services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            context.Services.TryAddSingleton <IMvcModuleSetup, MvcModuleSetup>();
            context.Services.TryAddSingleton <IReferenceContainer, DefaultReferenceContainer>();
            context.Services.TryAddSingleton <IReferenceLoader, DefaultReferenceLoader>();

            ServiceProvider provider    = context.Services.BuildServiceProvider();
            var             partManager = context.Services.GetSingletonInstance <ApplicationPartManager>();

            using (IServiceScope scope = provider.CreateScope())
            {
                var contextProvider = new CollectibleAssemblyLoadContextProvider();
                var pluginContext   = contextProvider.Get("DemoPlugin2", context.Services, partManager, scope);
                PluginsLoadContexts.Add("DemoPlugin2", pluginContext);
            }
            AssemblyLoadContextResoving();
            Configure <AbpAspNetCoreMvcOptions>(options =>
            {
                options.ConventionalControllers.Create(typeof(InBizModuleAppliction).Assembly);
            });
            Configure <RazorViewEngineOptions>(o =>
            {
                o.AreaViewLocationFormats.Add("/Modules/{2}/Views/{1}/{0}" + RazorViewEngine.ViewExtension);
                o.AreaViewLocationFormats.Add("/Views/Shared/{0}.cshtml");
            });
            context.Services.Replace <IViewCompilerProvider, InBizViewCompilerProvider>();
        }
예제 #3
0
        public void EnableModule(string moduleName)
        {
            ServiceProvider provider        = CoolCatStartup.Services.BuildServiceProvider();
            var             contextProvider = new CollectibleAssemblyLoadContextProvider();

            using (IServiceScope scope = provider.CreateScope())
            {
                var dataStore     = scope.ServiceProvider.GetService <IDataStore>();
                var documentation = scope.ServiceProvider.GetService <IQueryDocumentation>();

                var context = contextProvider.Get(moduleName, _partManager, scope, dataStore, documentation);
                PluginsLoadContexts.Add(moduleName, context);
                context.Enable();
            }

            ResetControllActions();

            //if (!PluginsLoadContexts.Any(moduleName))
            //{
            //    ServiceProvider provider = CoolCatStartup.Services.BuildServiceProvider();
            //    var contextProvider = new CollectibleAssemblyLoadContextProvider();

            //    using (IServiceScope scope = provider.CreateScope())
            //    {
            //        var dataStore = scope.ServiceProvider.GetService<IDataStore>();
            //        var documentation = scope.ServiceProvider.GetService<IQueryDocumentation>();

            //        var context = contextProvider.Get(moduleName, _partManager, scope, dataStore, documentation);
            //        PluginsLoadContexts.Add(moduleName, context);
            //    }

            //    ResetControllActions();
            //}
        }
예제 #4
0
        public void EnableModule(string moduleName)
        {
            if (!PluginsLoadContexts.Any(moduleName))
            {
                ServiceProvider provider        = MystiqueStartup.Services.BuildServiceProvider();
                var             contextProvider = new CollectibleAssemblyLoadContextProvider();

                using (IServiceScope scope = provider.CreateScope())
                {
                    var dataStore = scope.ServiceProvider.GetService <IDataStore>();

                    var context = contextProvider.Get(moduleName, _partManager, scope, dataStore);
                    PluginsLoadContexts.Add(moduleName, context);
                }

                ResetControllActions();
            }
        }
예제 #5
0
        public void EnableModule(string moduleName)
        {
            try
            {
                var controller = _partManager.ApplicationParts.FirstOrDefault(p => p.Name == moduleName);
                if (controller == null)
                {
                    ServiceProvider provider        = _serviceContext.Services.BuildServiceProvider();
                    var             contextProvider = new CollectibleAssemblyLoadContextProvider();
                    using (IServiceScope scope = provider.CreateScope())
                    {
                        var context = contextProvider.Get(moduleName, _serviceContext.Services, _partManager, scope);
                        PluginsLoadContexts.Add(moduleName, context);
                        context.Enable();
                    }
                    ResetControllActions();
                }
            } catch (Exception e) {
                Console.WriteLine(e);
            }


            //if (!PluginsLoadContexts.Any(moduleName))
            //{
            //    ServiceProvider provider = CoolCatStartup.Services.BuildServiceProvider();
            //    var contextProvider = new CollectibleAssemblyLoadContextProvider();

            //    using (IServiceScope scope = provider.CreateScope())
            //    {
            //        var dataStore = scope.ServiceProvider.GetService<IDataStore>();
            //        var documentation = scope.ServiceProvider.GetService<IQueryDocumentation>();

            //        var context = contextProvider.Get(moduleName, _partManager, scope, dataStore, documentation);
            //        PluginsLoadContexts.Add(moduleName, context);
            //    }

            //    ResetControllActions();
            //}
        }