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

基本上和3.1的差不多。3.x的之前的版本升级上了就需要做一些调整。目前这个发布版的没遇到太多问题。期待正式版发布。

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

可能你的不是 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<Startup>(); });
    }

4.Startup.cs 引用 

using Autofac;

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

public void ConfigureContainer(ContainerBuilder builder)
{  
//自动装配 RegisterType 能够通过反射检查一个类型,选择一个合适的构造函数,创造这个对象的实例。主要通过RegisterType<T>() 和 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

 

posted @ 2020-05-19 14:05  鼠标工程师  阅读(581)  评论(0)    收藏  举报