调用ModuleLoader单例实例,执行加载模块的方法.核心算法和老版Abp一样,这里稍微解释下,
核心点如下:
(1)、加载启动模块所有依赖的模块,并设置依赖项,最后生成IAbpModuleDescriptor...(2)、模块进行拓扑排序,进行循环依赖检测
?
ok,下面开始解析核心点源码
通过DependsOnAttribute特性来处理模块间的依赖关系.核心代码如下:
?...拿到当前类型的DependsOnAttribute特性,解析其内部的类型,加入到dependencies依赖类型集合.所以表示模块间的依赖关系根据如上代码可以得出两种模式,如下:
?...核心代码如下,关于拓扑排序(算法的核心逻辑自行查阅代码,主要内容是按照依赖关系依次加入到集合,后期可一次执行,这样就可以集成生命周期),防止循环依赖就不说了,接着,将启动模块放到最后为了配合模块生命周期方法的执行...下一篇会介绍vnext如何完成整个DI切换,换成autofac或者其他容器.以及如何和模块加载系统结合.