Esempio n. 1
0
        /// <summary>
        /// Ensures that there are no modules marked to be loaded <see cref="InitializationMode.WhenAvailable"/>
        /// depending on modules loaded <see cref="InitializationMode.OnDemand"/>
        /// </summary>
        protected virtual void ValidateDependenciesInitializationMode()
        {
            Log.Debug("Validating Dependencies initialization mode");

            ModuleInfo moduleInfo = _synchronizationContext.Execute(() => Modules.FirstOrDefault(m => m.InitializationMode == InitializationMode.WhenAvailable && GetDependentModulesInner(m).Any(dependency => dependency.InitializationMode == InitializationMode.OnDemand)));

            if (moduleInfo != null)
            {
                var exception = new ModularityException(moduleInfo.ModuleName, string.Format(CultureInfo.CurrentCulture, "Module {0} is marked for automatic initialization when the application starts, but it depends on modules that are marked as OnDemand initialization. To fix this error, mark the dependency modules for InitializationMode=WhenAvailable, or remove this validation by extending the ModuleCatalog class.", moduleInfo.ModuleName));

                Log.Error(exception);

                throw exception;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Ensures that all the dependencies within <paramref name="modules" /> refer to <see cref="ModuleInfo" />s
        /// within that list.
        /// </summary>
        /// <param name="modules">The modules to validate modules for.</param>
        /// <exception cref="ModularityException">Throws if a <see cref="ModuleInfo" /> in <paramref name="modules" /> depends on a module that's
        /// not in <paramref name="modules" />.</exception>
        /// <exception cref="System.ArgumentNullException">Throws if <paramref name="modules" /> is <see langword="null" />.</exception>
        /// <exception cref="System.ArgumentNullException">The <paramref name="modules" /> is <c>null</c>.</exception>
        protected static void ValidateDependencies(IEnumerable <ModuleInfo> modules)
        {
            Argument.IsNotNull("modules", modules);

            var moduleNames = modules.Select(m => m.ModuleName).ToList();

            foreach (ModuleInfo moduleInfo in modules)
            {
                if (moduleInfo.DependsOn != null && moduleInfo.DependsOn.Except(moduleNames).Any())
                {
                    var exception = new ModularityException(moduleInfo.ModuleName, string.Format(CultureInfo.CurrentCulture, "Module {0} depends on other modules that don't belong to the same group.", moduleInfo.ModuleName));

                    Log.Error(exception);

                    throw exception;
                }
            }
        }