1、Nuget引入
Autofac、Autofac.Extensions.DependencyInjection
2、Program.cs里面添加注入配置
{ //第一种方式注入 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); //通过工厂替换,把Autofac整合进来 builder.Host.ConfigureContainer<ContainerBuilder>(option => { option.RegisterType<Microphone>().As<IMicrophone>(); option.RegisterType<Power>().As<IPower>(); option.RegisterType<Headphone>().As<Headphone>(); option.RegisterType<Headphone>().As<IHeadphone>(); }); ////第二种方式 //builder.Host //.UseServiceProviderFactory(new AutofacServiceProviderFactory()) //.ConfigureContainer<ContainerBuilder>(builder => //{ // builder.RegisterModule(new AutofacModuleRegister()); //}); }
第二种方式,是新建一个AutofacModuleRegister类
1 using Autofac; 2 using Business.IServices; 3 using Business.Services; 4 using System.Reflection; 5 6 namespace ProjectIOC.Extensions 7 { 8 public class AutofacModuleRegister : Autofac.Module 9 { 10 /// <summary> 11 /// 重新Autofac管道load方法,在这里注册注入 12 /// </summary> 13 /// <param name="builder"></param> 14 protected override void Load(ContainerBuilder builder) 15 { 16 //程序集 17 var IAppServices = Assembly.Load("Business.IServices"); 18 var AppServices = Assembly.Load("Business.Services"); 19 20 //根据名称约定(服务层的接口和实现均以Service结尾),实现服务接口和服务实现的依赖 21 builder.RegisterassemblyTypes(IAppServices, AppServices) 22 .Where(t => t.Name.EndsWith("Service")) 23 .AsImplementedInterfaces(); 24 25 builder.RegisterType<Microphone>().As<IMicrophone>().SingleInstance(); 26 } 27 } 28 }View Code
在类里面添加注入
1 using Autofac; 2 using Business.IServices; 3 using Microsoft.AspNetCore.Mvc; 4 5 namespace ProjectIOC.Controllers 6 { 7 public class HomeController : Controller 8 { 9 private readonly IMicrophone _microphone; 10 private readonly IMicrophone _microphone2; 11 private readonly IMicrophone _microphone3; 12 13 public HomeController(IMicrophone microphone,IServiceProvider serviceProvider,IComponentContext componentContext) 14 { 15 this._microphone = microphone; 16 this._microphone2 = serviceProvider.GetService<IMicrophone>(); 17 this._microphone3 = componentContext.Resolve<IMicrophone>(); 18 } 19 20 public IActionResult Index() 21 { 22 return View(); 23 } 24 } 25 }View Code
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。