先从NuGet包里下载这2个文件
然后创建一个类 继承:Autofac.Module
using System.Reflection;
using Autofac;
namespace RBAC_Api
{
public class RbacModule:Autofac.Module
{
/// <summary>
/// 重写 Load方法
/// </summary>
/// <param name="builder"></param>
protected override void Load(ContainerBuilder builder)
{
//反射加工厂设计模式完成的
//业务逻辑
//1.通过反射的方式加载类库()
//2.Assembly 反射的类库
//原理:通过Assembly这个类来动态加载程序集,然后Autofac 会扫描加载的程序集中的类 型,寻找可以注册为服务的类型
var Repository = Assembly.Load("RBAC_Repository");
var Service = Assembly.Load("RBAC_Service");
//将程序集注入到AutoFac当中
//AsImplementedInterfaces()比如你现在是一个实现类,它会自动找到它的接口来实现
builder.RegisterAssemblyTypes(Repository).Where(x => x.Name.EndsWith("Repository")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(Service).Where(x => x.Name.EndsWith("Service")).AsImplementedInterfaces();
//注入单个文件
//builder.RegisterType(typeof(RBACDbContext));
base.Load(builder);
}
}
}
//将.NET Core 自带的IOC 由AutoFac 接管
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
{
//RbacModule自己创建的Module类
builder.RegisterModule(new RbacModule());
});
Program.cs中注入
标签:Load,Core,AutoFac,Assembly,Repository,Service,builder,Net From: https://www.cnblogs.com/Ouyx/p/18051651