茶马古道fdtmd,吴劲松,画皮2mp4下载
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); }
随着业务的增长,接口跟实现类会越来越多,还需要手动一个个的注册依赖项,有时候会出现忘了写配置,导致程序报错,如果是多人开发,可能还会导致代码冲突,后期维护起来相对来说比较麻烦。
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); }
public interface itestservice { string hello(); }
public class testservice : itestservice { public string hello() { return "hello word"; } }
通过控制器的构造方法注入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; } }
运行
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论