.net core 5 Autofac 填坑记录 .net 5 预览版3

2021-02-20 19:18

阅读:560

标签:builder   run   iss   gas   dep   介绍   修改   inject   ted   

1. 添加nuget包 Autofac 

2.Program.cs 添加引用:

using Autofac.Extensions.DependencyInjection;

3.在Program.cs 中添加如下代码

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
            .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });

可能你的不是 CreateHostBuilder 这个可以自己修改 运行的入口点是:Main  贴上我的 Program.cs

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory()) //这里是Autofac的引用声明
            .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });
    }

4.Startup.cs 引用 

using Autofac;

5.Startup.cs 下的入口做了一些更改 不在ConfigureServices方法进行 而是放在 ConfigureContainer 方法下,如果没有这个方法,请手动创建

public void ConfigureContainer(ContainerBuilder builder)
{  
//自动装配 RegisterType 能够通过反射检查一个类型,选择一个合适的构造函数,创造这个对象的实例。主要通过RegisterType() 和 RegisterType(Type) 两个方法以这种方式建立。
builder.RegisterType(typeof(CacheContext)).As(typeof(ICacheContext));
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()); 
// 程序集扫描
RegisterAssemblyTypes
builder.RegisterAssemblyTypes(typeof(BaseRepository).Assembly) .Where(t => t.Name.EndsWith("Repository")) .InstancePerLifetimeScope() .AsImplementedInterfaces();
}

更多Autofac的用例介绍请看这里:https://www.cnblogs.com/kissdodog/p/3611799.html

 

.net core 5 Autofac 填坑记录 .net 5 预览版3

标签:builder   run   iss   gas   dep   介绍   修改   inject   ted   

原文地址:https://www.cnblogs.com/anilybin/p/12916608.html


评论


亲,登录后才可以留言!