Mini.Crm/Mini.Common/ContainerManager.cs

49 lines
1.5 KiB
C#

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<T>()
{
return container.Resolve<T>();
}
public static T ResolveNamed<T>(string name)
{
return container.ResolveNamed<T>(name);
}
public static void InitContainer()
{
var typeFinder = new WebAppTypeFinder();
var containerBuilder = new ContainerBuilder();
var types = typeFinder.FindClassesOfType(typeof(IDependencyRegistrar));
var drInstances = new List<IDependencyRegistrar>();
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));
}
}
}