.net Core Autofac稍微高级一点的方法

前情摘要

前段时间写了autofac的注入但是每次都需要去修改startup这应该不是大家想要的。

至少不是我想要的。

网上有朋友说可以创建一个基础类来时间。

好了吹牛时间结束我们开始干点正事。

创建Autofac-Base类

对对对。在网站项目下创建一个文件夹,名字Autofac

然后创建一个类 Base (创建类的快捷键ctrl+alt+a)

然后就变成了这个样子

Base.cs代码如下(因为使用了另外一个项目所以说和上一篇的interface对不上大家自行修改下。)

    public class Base : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            //注入测试服务
            builder.RegisterType<Infrastructure.Repositories.UserInfoRepository>().As<Core.Interfaces.IUserInfoRepository>();
            builder.RegisterType<Infrastructure.Repositories.CaseInfoRepository>().As<Core.Interfaces.ICaseInfoRepository>();

        }
    }

 

 

修改Startup代码

这是原来的样子

    public void ConfigureServices(IServiceCollection services)

我们要改成这个样子

        public IContainer ApplicationContainer { get; private set; }
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            //返回的void 修改为 IServiceProvider 这是为了让第三方Ioc容易接管通道 具体在第几层怎么实现我没有深入研究  
            services.AddMvc();
            var builder = new ContainerBuilder();//实例化 AutoFac  容器            
            builder.Populate(services);//管道寄居
            builder.RegisterModule<AutofacModule.Base>();//使用Module 重写的方式配置 就不需要每次都来修改Startup文件了。后期打算改成json的。
            //builder.RegisterType<AutofaceTest.Service.Service.UserService>().As<Service.Interface.IUserService>();//UserService注入到IUserService
            ApplicationContainer = builder.Build();//IUserService UserService 构造
            return new AutofacServiceProvider(ApplicationContainer);//将autofac反馈到管道中
        }

 

使用高级属性全注入方式

这里我今儿又偷懒不想写了。呵呵。。2018-09-28 不写了 09-29写吧。

结尾

我就是写一下目录。 明儿再写。

 

posted @ 2018-09-26 17:44  Royal丶鬼才  阅读(696)  评论(2编辑  收藏  举报