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