标签: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<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
.net core 5 Autofac 填坑记录 .net 5 预览版3
标签:builder run iss gas dep 介绍 修改 inject ted
原文地址:https://www.cnblogs.com/anilybin/p/12916608.html