using Autofac; using Autofac.Integration.Mvc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web.Mvc; using System.Linq; namespace Mini.Common { public class ContainerManager { public static Autofac.IContainer container = null; public static T Resolve() { return container.Resolve(); } public static T ResolveNamed(string name) { return container.ResolveNamed(name); } public static void InitContainer() { var typeFinder = new WebAppTypeFinder(); var containerBuilder = new ContainerBuilder(); var types = typeFinder.FindClassesOfType(typeof(IDependencyRegistrar)); var drInstances = new List(); foreach (var drType in types) { drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType)); //LogHelper.Info(drType.ToString()); } drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList(); //register all provided dependencies foreach (var dependencyRegistrar in drInstances) { dependencyRegistrar.Register(containerBuilder, typeFinder); } container = containerBuilder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } } }