IOC
IOC基本介绍
IOC的实现方式:
- 服务定位器(ServiceLocator),例如:
ServiceLocator.GetService<XXXService>
- DI (Dependency Injection)
- 服务:我们需要容器帮我们创建的对象
- 注册服务:将对象注册到容器中
- 服务容器:负责管理注册的对象
- 查询服务:创建和关联对象
- 对象生命周期:
- Transient:瞬态,用完就销毁,每次获取都是重新创建一个新的对象
- Scoped:范围,用完不销毁,指定范围内获取的都是同一个对象
- Singleton:单例,全局获取的都是同一个对象。建议在创建无状态对象时使用
.NET Core中IOC的使用
.NET控制服务反转组件取名为DependencyInjection,同时包含了ServiceLocator的功能。
ServiceLocator
1、Install-Package
Microsoft.Extensions.DependencyInjection
2、获取服务
创建ServiceCollection
对象,注册服务,调用ServiceCollection
中的BuilderServiceProvider()
方法,创建ServiceProvider
容器,获取服务。
1 | class Program |
DI
1.依赖注入是具有传染性的,如果一个类的实例对象是通过DI创建的,那么这个类的构造器中所有声明的服务都将会使用DI创建
2.默认构造函数注入
1 | public class UserController |
配置系统
Json文件配置
1、Install Package
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
绑定读取配置,可将配置文件内容封装到类中:Microsoft.Extensions.Configuration.Binder
2、读取配置文件
1 | { |
1 | class Program |
选项方式读取(推荐使用)
1、Install Package
Microsoft.Extensions.Options
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Configuration.Binder
1 | public class ConfigService |
日志系统
明天再学,累了。