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>();
        }

  

 

posted @ 2020-12-15 09:37  kaikaichao  阅读(120)  评论(0编辑  收藏  举报