码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-04-27 19:56:45      阅读:698      评论:0      收藏:0      [点我收藏+]

标签:tor   uml   分享图片   nbsp   info   asp   inf   就是   item   

 技术分享图片

两大要素:ServiceCollection和ServiceProvider


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


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

 

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

 

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

标签:tor   uml   分享图片   nbsp   info   asp   inf   就是   item   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!