第一次使用autofac,然后net6最新长期支持的,就想着在net6的基础上使用autofac,我对依赖注入理解很差,一知半解的搞了好久。好在有了一点点的头绪,记录下省的以后忘记(突然发现自己以前用过的东西忘了好多……)
1. 首先你要有个仓储模式的项目、这个自己搭建吧
2. 在Program.cs文件中:配置程序依赖注入的容器工厂为AutoFac,覆盖默认的容器工厂。
3. 添加AutoFacMoudleReg模块,注意:这个名字是你自己起的类名,我们的注册规则写在这个类里面
4. AutoFacMoudleReg模块编写。
4.1 首先继承autofac的Module
4.2 其次重写Load方法
4.3 RegisterAssemblyTypes:注册程序集中所有的类型
AsImplementedInterfaces:把服务里继承的接口也注册(应该是这个意思,这块儿不是很了解,大概是这个意思)
PropertiesAutowired:自动属性注入(没有深究,GPT:当一个类中有公共的可写属性时,Autofac 将会自动为这些属性注入相应的依赖项)
InstancePerDependency:生命周期,瞬时的(有没有其他的生命周期,我还没了解)
5.最重要的一点!!!因为仓储模式是互相调用的接口,理论上在程序(API/Controllers)层是没办法注入仓储层和服务层的服务的。除非你引用他们,但是如此这样,仓储模式的理念:解耦!就有点违背了。看老张的文章,依赖注入并非为了解耦,emmmm。其实我不是很了解,直接说结论。就是设置仓储和服务生成的相对路径,将 Repository 层和 Service 层项目生成地址改成相对路径,编译的时候就直接生成到了 api 层 bin 下了。这里是看的老张的博客学的。
领取专属 10元无门槛券
私享最新 技术干货