首页 > Web开发 > 详细

asp.net core 内置DI容器的一点小理解

时间:2018-04-27 18:34:18      阅读:213      评论:0      收藏:0      [点我收藏+]

 技术分享图片

两大要素:ServiceCollection和ServiceProvider


通过上面的UML类图可以看出ServiceCollection其实就是一个集合,存放接口和实现的对应关系。这个集合的Item就是ServiceDescriptor类。ServiceDescriptor类有两个类型为Type的属性。一个代表接口类型,一个代表实现类的类型,形成对应关系。


ServicePorvider可以理解为具体服务的提供器。它是由ServiceCollection的扩展方法BuildServiceProvider创建的。我们需要什么服务,从提供器取就行了。通过上图可以看到ServicePorvider有个方法叫:GetService,这个方法会根据我们提供的接口从ServiceDescriptor集合中(ServiceCollection)中查找对应的实现类。当ServiceType和传入的接口类型一致后,再从匹配的ServiceDescriptor拿到ImplementationType实现类型,最后实例化该类型返回给我们。

 

上面获取实现类的描述,没有考虑ImplementationInstance和ImplementationFactory。更高大上的还是看大神的博客吧。

 

asp.net core 内置DI容器的一点小理解

原文:https://www.cnblogs.com/subendong/p/8963840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!