什么情况下需要引入第三方容器组件
- 基于名称的注入
- 我们需要把一个服务,按照名称来区分它不同的实现的时候
- 属性注入
- 之前提到过,我们的注入方式有
FromServices的方式,还有构造函数入参的方式,直接可以把服务注册到某一个类的属性里面去。
- 之前提到过,我们的注入方式有
- 子容器
- 子容器其实可以理解成之前讲过的
Scope,还可以用第三方的框架来实现一些特殊的子容器。
- 子容器其实可以理解成之前讲过的
- 基于动态代理的AOP
- 当我们需要在服务中注入我们额外的行为的时候,我们可以用动态代理的能力。
核心扩展点
public interface IServiceProviderFactory<TContainerBuilder>- 第三方的依赖注入容器,都是使用了这个类来作为扩展点,把自己注入到我们整个的框架里面来,也就是说我们在使用这些依赖注入的框架的时候,我们不需要关注说,谁家的特性,谁家的接口时生命样子的,我们只需要使用官方核心的定义就可以了,我们不需要直接依赖这些框架。
示例
首先我们新建Web程序