我们都知道,.net core 天生自带 IoC 容器, 但是他的功能其实并不强大, 而且有坑: 在构造注入的时候, 他默认找参数最少的构造函数.
这里, 我讲解如何使用 AutoFac 去接管 IoC, 至于为什么要选 Autofac, 这个其实我也是随大众, 不过后面我讲到关于使用 Autofac 实现 AOP 的时候, 或许你能发现他的好处
第一步, 引包
第二步, 修改 startup.cs 文件
首先, 在类的内部定义一个新的方法
- public void ConfigureContainer(ContainerBuilder builder)
- {
- // 在这里添加服务注册
- builder.RegisterType<ProductRepository>().As<IProductRepository>();// 注册
- }
在这个方法里, 完成服务注册. 对于服务注册这块, 关于 Autofac 的 API 如果有需要更多的了解的话, 可以查阅 Autofac 指南
第三步, 修改 Program.cs 文件
UseServiceProviderFactory(new AutofacServiceProviderFactory())// 使用 AutoFac 做 IoC 和 AOP
第四步, 正式使用
对于使用 IoC, 虽然 Autofac 有多种骚姿势, 但是我这里还是推荐使用构造注入, 如果要问为什么, 其实关键在于, 你不用在每个类库中都去拉包, 到处都拉包的话, 项目就会对组件产生依赖, 产生一定的耦合.
来源: http://www.bubuko.com/infodetail-3394259.html