Esempio n. 1
0
        /// <summary>
        /// Initializes the modules. May be overwritten in a derived class to use a custom Modules Catalog.
        /// </summary>
        protected override void InitializeModules()
        {
            var moduleManager = Container.ResolveType <IModuleManager>();

            var defaultModuleManager = moduleManager as ModuleManager;

            if (defaultModuleManager != null)
            {
                var typeLoaders = new List <IModuleTypeLoader>();

                var existingTypeLoaders = defaultModuleManager.ModuleTypeLoaders;
                if (existingTypeLoaders != null)
                {
                    typeLoaders.AddRange(existingTypeLoaders);
                }

#if !SL5
                // CTL-646
                if (ModuleCatalog.IsCatalogType <INuGetBasedModuleCatalog>())
                {
                    if (!typeLoaders.Any(x => x is NuGetModuleTypeLoader))
                    {
                        typeLoaders.Add(new NuGetModuleTypeLoader(ModuleCatalog));
                    }
                }
#endif

                defaultModuleManager.ModuleTypeLoaders = typeLoaders;
            }

            var registeredModulesCount = 0;
            Logger.Log("Registering currently available modules automatically", Category.Debug, Priority.Low);

            foreach (var module in ModuleCatalog.Modules)
            {
                if (RegisterModule(module))
                {
                    registeredModulesCount++;
                }
            }

            Logger.Log(string.Format("Registered '{0}' available modules automatically", registeredModulesCount), Category.Debug, Priority.Low);

            moduleManager.ModuleDownloadProgressChanged += OnModuleDownloadProgressChanged;

            moduleManager.Run();
        }