Kephas中的AmbientServices和CompositionContext有什么区别?

时间:2019-03-29 06:10:28

标签: dependency-injection kephas

从我注意到的角度来看,他们做的几乎是同一件事,以IoC / DI的形式提供服务。但是,IAmbientServices的成员类型为ICompositionContext。我并没有真正了解两者之间的区别,为什么它们会以这种方式聚合?

1 个答案:

答案 0 :(得分:1)

简洁的答案是:ambient services包含在构建IoC / DI /组成容器之前在中注册的服务,而composition context是IoC /的根容器DI,它本身就是在ambient services中注册的服务。

请注意,ambient services中注册的所有服务随后也会自动在DI容器中注册,包括IAmbientServices,因此它们也可用于组合。

环境服务示例:

  • 日志管理器:记录器提供商。
  • 类型加载器:从程序集中加载类型。
  • 配置存储:提供主要的配置设置。

作为一般经验法则,宁愿使用在DI容器中注册的服务,也很少需要环境服务。