49 lines
1.5 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|