第一步:引入nuget包
Install-Package Autofac
Install-Package Autofac.MVC5
Install-Package Autofac.WebApi2
第二步:Autofac容器工厂
/// <summary> /// Autofac容器工厂 /// </summary> public class AutofacFactory { /// <summary> /// Autofac容器对象 /// </summary> private static IContainer _container; /// <summary> /// 注册Autofac容器工厂 /// </summary> public static void register() { //初始化 var builder = new ContainerBuilder(); // 注入MVC 控制器 builder.RegisterControllers(Assembly.GetCallingAssembly()).PropertiesAutowired(); // 注入WebApi 控制器 builder.RegisterApiControllers(Assembly.GetCallingAssembly()).PropertiesAutowired(); // 获取bin文件夹中所有dll var dataAccess = AppDomain.CurrentDomain.GetAssemblies(); // 注入Repository builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces(); // 注入Service builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces(); //创建容器 _container = builder.Build(); //设置MVC依赖注入 DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); //设置WebApi依赖注入 GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(_container); } /// <summary> /// 从Autofac容器获取对象 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static T Get<T>() { return _container.Resolve<T>(); } }第三步:在 Global.asax 中注入 Autofac容器工厂实现自动注入
AutofacFactory.register();第四步:使用
/// <summary> /// 测试Api控制器 /// </summary> public class TestController : ApiController { /// <summary> /// 测试业务 /// </summary> ITestService test; /// <summary> /// DI /// </summary> /// <param name="service"></param> public TestController(ITestService service) { test = service; } /// <summary> /// 测试方法 /// </summary> /// <returns></returns> [HttpGet] public string show() { test.saveTran("张三", "张道陵"); return test.go(); } }注意:需要注入的类库生成的dll文件一定要放在对应启动项目的bin文件夹下