.Net Core AutoFac 批量注入

先从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中注入

posted @ 2024-03-04 13:43  Oyx。  阅读(287)  评论(0)    收藏  举报