BoC.InversionOfControl.IoC.RunContainerInitializers C# (CSharp) Метод

RunContainerInitializers() приватный статический Метод

private static RunContainerInitializers ( IDependencyResolver dependencyResolver, IAppDomainHelper appdomainHelpers ) : void
dependencyResolver IDependencyResolver
appdomainHelpers IAppDomainHelper
Результат void
        private static void RunContainerInitializers(IDependencyResolver dependencyResolver, IAppDomainHelper[] appdomainHelpers)
        {
            if (appdomainHelpers == null || appdomainHelpers.Any() )
            {
                var helper = AppDomainHelper.CreateDefault();
                appdomainHelpers = new[] {helper};
            }

            if (!dependencyResolver.IsRegistered(typeof (IAppDomainHelper)))
            {
                foreach (var helper in appdomainHelpers)
                {
                    dependencyResolver.RegisterInstance<IAppDomainHelper>(helper);
                }
            }

            var allTasks =
                appdomainHelpers.SelectMany(helper => helper.GetTypes(
                    t => t.IsClass && !t.IsAbstract && typeof (IContainerInitializer).IsAssignableFrom(t)));
            //run them:
            var allTasksList = allTasks as IList<Type> ?? allTasks.ToList();

            var nonbocHelpers = allTasksList.Where(t => t.Namespace != null && !t.Namespace.StartsWith("BoC."));
            var bocHelpers = allTasksList.Where(t => t.Namespace != null && t.Namespace.StartsWith("BoC."));

            //first user's tasks:
            foreach (var type in nonbocHelpers)
            {
                var task = CreateTask(dependencyResolver, type, appdomainHelpers);
                task.Execute();
            }
            //now ours:
            foreach (var type in bocHelpers )
            {
                var task = CreateTask(dependencyResolver, type, appdomainHelpers);
                task.Execute();
            }
        }