NetCore学习 (1)--添加autofac 第三方Ioc
1.引用 组件 Autofac.Extensions.DependencyInjection
2.program.cs 中添加
UseServiceProviderFactory(new AutofacServiceProviderFactory())
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
3.startup 里添加注入 容器(一般用程序集整个注入比较合适)
public void ConfigureContainer(ContainerBuilder builder) { //方式二 扫描程序集, RegisterAssemblyTypes接收包含一个或多个程序集的数组作为参数. 默认地, 程序中所有具体的类都将被注册. var asm = Assembly.Load("MvcService");//指定dll名称的程序集集 var defulatAsm = Assembly.GetExecutingAssembly();//默认执行的dll builder.RegisterAssemblyTypes(asm, defulatAsm) .PublicOnly()//仅注册public的方法 .Where(t => t.Name.EndsWith("Service"))//可以在这里写一些过滤类名规则 .AsImplementedInterfaces(); RegisterContainerBuilder(builder); }
4.也可以单独注入某个类
public void RegisterContainerBuilder(ContainerBuilder builder) { builder.RegisterType<PriceLogic>(); }