欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net core 抽取Controller到类库及Autofac自动属性注入

程序员文章站 2022-03-23 19:21:19
写在前面 之前有个项目是用asp.net webapi做的,pc和移动端共用api的服务接口,balabala,正好最近在看关于asp.net core方面的资料,各种依赖注入,中间件,处理管道等,而且把webapi和mvc融合到了一起,就想着把之前那个项目移到asp.net core上。 由于之前 ......
写在前面 
之前有个项目是用asp.net webapi做的,pc和移动端共用api的服务接口,balabala,正好最近在看关于asp.net core方面的资料,各种依赖注入,中间件,处理管道等,而且把webapi和mvc融合到了一起,就想着把之前那个项目移到asp.net core上。

由于之前的项目是把controller抽离出来了,单独建了个类库,而且不止一个controller类库,当然还有不止一个的bll和ibll以及entity。怎么把这么些东西全部注入到asp.net core 容器里去呢,自带的注入容器方式太过繁琐,而且通过构造函数或者action参数的方式获取依赖也不够清爽。

今天分享的东西就是如果把controller从asp.net core 中抽离,以及通过通过加载类库程序集的方式,依赖进autofac容器,然后进行自动的属性注入。话不多少,直接上干货。

1、首先看下demo的结构

asp.net core 抽取Controller到类库及Autofac自动属性注入

 

2、然后通过nuget引入autofac.extensions.dependencyinjection,

3、修改startup.cs的configureservices方法,让依赖注入容器改为autofac

asp.net core 抽取Controller到类库及Autofac自动属性注入

 

asp.net core 抽取Controller到类库及Autofac自动属性注入

另外要在services.addmvc()的上面加上这句,替换默认的容器;

asp.net core 抽取Controller到类库及Autofac自动属性注入

4、把抽离的controller类库加入到应用

 我这里写了两个获取controller和bll程序集的方法

asp.net core 抽取Controller到类库及Autofac自动属性注入

当然如果你的bll也是多个的话,可以按照命名规则来确定getfiles的参数格式,如:apitest.bll.*.dll

调用mvcbuilder扩展方法addapplicationpart引入controller程序集

asp.net core 抽取Controller到类库及Autofac自动属性注入

当然,如果你抽离的controller类库只有一个的话,还可以这么写

asp.net core 抽取Controller到类库及Autofac自动属性注入

5、autofac注册程序集

 asp.net core 抽取Controller到类库及Autofac自动属性注入

当然你也可以把红框内的内容封装到defaultmodel中,也可以起个别的名字

 asp.net core 抽取Controller到类库及Autofac自动属性注入

6、测试

asp.net core 抽取Controller到类库及Autofac自动属性注入

asp.net core 抽取Controller到类库及Autofac自动属性注入

usercontroller同理。

希望上述内容会对你有帮助。

 

参考资料:

https://autofaccn.readthedocs.io/zh/latest/integration/aspnetcore.html

https://www.cnblogs.com/selimsong/p/10047321.html