.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写吧。
结尾
我就是写一下目录。 明儿再写。