Autofac程序集注入

Autofac是一个开源的轻量级的依赖注入容器,可自动选择使用构造函数注入或者属性注入。

浅浅记录Autofac

一、Autofac包引入

1、Autofac
2、Autofac.Extensions.DependencyInjection

二、Startup类中应用

1、ConfigureServices中返回注册的Autofac

// 注册Autofac
return RegisterAutofac(services);

2、创建RegisterAutofac类,TeasingDbContext数据库连接字符串,在appsettings.json配置。TeasingDbContext为上下文映射。

		private IServiceProvider RegisterAutofac(IServiceCollection services) {
			//创建注册组件/服务的构建器
			var builder = new ContainerBuilder();
			//将依赖的对象注入
			builder.Populate(services);
			//将新的模块注册进去,AutofacDI后面将会用反射进行程序集注入
			builder.RegisterModule<AutofacDI>();
			//初始化使用
			builder.Register(c => {
				var optionsBuilder = new DbContextOptionsBuilder<TeasingDbContext>();
				optionsBuilder.UseSqlServer(Configuration.GetConnectionString("TeasingDbContext"));
				return optionsBuilder.Options;
			}).InstancePerLifetimeScope();
			//注册DbContext
			builder.RegisterType<TeasingDbContext>()
				.AsSelf()
				.InstancePerLifetimeScope();
			//DI创建
			var Container = builder.Build();
			return new AutofacServiceProvider(Container);
		}

三、程序集注入

1、新建类 AutofacDI 需要继承Autofac.Module作为一个容器,实现一次性程序集注入。

protected override void Load(ContainerBuilder builder) {
			//程序集注入
			builder.RegisterAssemblyTypes(GetAssemblyByName("TS.Repository"))
				.Where(a => a.Namespace.EndsWith("Repository")).AsImplementedInterfaces();
		}
public static Assembly GetAssemblyByName(String AssemblyName) {
			return Assembly.Load(AssemblyName);
		}

TS.Repository:是程序集名称
EndsWith(“Repository”):以Repository结尾的类
Assembly有三种加载程序集方式:

  1. Assembly.Load(“程序集名称”);
  2. Assembly.LoadFrom(“程序集名称.dll”);
  3. Assembly.LoadFile(“绝对路径”);

框架图

链接: link.
图片: 仅供参考
在这里插入图片描述
如有发现错误请联系微信:sunyong8860
看完视频或书籍后小结_.NET

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值