写在前面 
之前有个项目是用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的结构

\"\"

 

2、然后通过NuGet引入Autofac.Extensions.DependencyInjection,

3、修改Startup.cs的ConfigureServices方法,让依赖注入容器改为Autofac

\"\"

 

\"\"

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

\"\"

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

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

\"\"

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

调用MvcBuilder扩展方法AddApplicationPart引入controller程序集

\"\"

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

\"\"

5、Autofac注册程序集

 \"\"

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

 \"\"

6、测试

\"\"

\"\"

UserController同理。

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

 

参考资料:

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

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

收藏 打印