using Autofac; using MAX.Core.Autofac; using MAX.Core.DependencyInjection; using MAX.Core.Helpers; using MAX.Core.Infrastructure; using MAX.Core.Reflections; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace LittleCow.Core.Infrastructure { public class Bootstrap { public static void Builder() { var Builder = new ContainerBuilder(); Assembly[] assemblies = AppTypeFinder.Assemblies.ToArray(); // Make sure any not specifically registered concrete type can resolve. IEnumerable startupList = ReflectionHelper.GetInstancesByInterface(assemblies); int index = 1; foreach (IStartup item in startupList.OrderByDescending(a => a.Priority)) { Debug.WriteLine($"Startup - {index++} : {item.GetType()}"); item.Initialize(); } // Make sure any not specifically registered concrete type can resolve. IEnumerable ListDependency = ReflectionHelper.GetInstancesByInterface(assemblies); foreach (IDependencyRegistrar item in ListDependency) { item.Register(Builder); } IocManager.SetContainer(Builder.Build()); } } }