netcore 2.2 使用 Autofac 实现自动注入
程序员文章站
2023-11-10 22:42:16
Autofac自动注入是通过名称约定来实现依赖注入 ps:本demo接口层都以“I”开头,以“Service”结尾。服务层实现都以“Service”结尾。 为什么要实现自动注入 大多时候,我们都是 以下方式进行依赖注入 public IServiceProvider ConfigureService ......
autofac自动注入是通过名称约定来实现依赖注入
ps:本demo接口层都以“i”开头,以“service”结尾。服务层实现都以“service”结尾。
为什么要实现自动注入
大多时候,我们都是 以下方式进行依赖注入
public iserviceprovider configureservices(iservicecollection services) { services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2); //初始化容器 var builder = new containerbuilder(); //管道寄居 builder.populate(services); builder.registertype<testservice>().as<itestservice>();//userservice注入到iuserservice //构造 applicationcontainer = builder.build(); //将autofac反馈到管道中 return new autofacserviceprovider(applicationcontainer); }
随着业务的增长,接口跟实现类会越来越多,还需要手动一个个的注册依赖项,有时候会出现忘了写配置,导致程序报错,如果是多人开发,可能还会导致代码冲突,后期维护起来相对来说比较麻烦。
实用autofac自动注入
public iserviceprovider configureservices(iservicecollection services) { services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2); //初始化容器 var builder = new containerbuilder(); //管道寄居 builder.populate(services); //业务逻辑层所在程序集命名空间 assembly service = assembly.load("netcoredemo.service"); //接口层所在程序集命名空间 assembly repository = assembly.load("netcoredemo.repository"); //自动注入 builder.registerassemblytypes(service, repository) .where(t => t.name.endswith("service")) .asimplementedinterfaces(); //构造 applicationcontainer = builder.build(); //将autofac反馈到管道中 return new autofacserviceprovider(applicationcontainer); }
简单测试
创建iuserservice接口
public interface itestservice { string hello(); }
创建userservice实现类
public class testservice : itestservice { public string hello() { return "hello word"; } }
创建testcontroller控制器
通过控制器的构造方法注入itestservice接口
[route("api/test")] [apicontroller] public class testcontroller : controller { private readonly itestservice _testservice; /// <summary> /// 构造函数 /// </summary> /// <param name="testservice"></param> public testcontroller(itestservice testservice) { _testservice = testservice; } [httpget] public string hello() { var str= _testservice.hello(); return str; } }
运行
推荐阅读
-
netcore 2.2 使用 Autofac 实现自动注入
-
netcore 2.2 使用 AutoMapper 实现实体之间映射
-
ASP.NETCore 3.0 Autofac替换及控制器属性注入及全局容器使用
-
netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布
-
IOC容器-Autofac在MVC中实现json方式注入使用
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之六使用过滤器进行全局请求数据验证
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之八MemoryCache与redis缓存的使用
-
ASP.NET Core依赖注入解读及使用Autofac替代实现
-
从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之十一Swagger使用一