ABP框架学习记录(4)- Configuration解析
ABP框架学习记录(4)- Configuration解析
目录结构:

通过 AbpStartupConfiguration,Castle的依赖注入,Dictionary 对象和扩展方法实现了配置中心化。配置中心化是一个支持模块开发的框架必备功能。
核心模块配置
模块配置
ABP中核心功能模块中的一些功能的运行时的行为依赖于一些外部配置。比如 Localization 这个功能模块,最基本Abp需要知道要做哪些语言的本地化。而这些具体的配置对于Abp底层框架来说是不可预知的,那么ABP底层框架就很有必要提供一种手段供外部模块自定义 Congfiguration。 这就是下文要分析的 IAbpStartupConfiguration 和各种I***Configuration。
通过 AbpBootstrapper 的 Initialize 方法,注册 AbpCoreInstaller:
具体请参考:ABP框架学习记录(2) - ABP初始化

AbpCoreInstaller:

IAbpStartupConfiguration/AbpStartupConfiguration : Initialize 方法,通过调用容器,获取基础配置实例。

调用配置
抽象类 AbpModule 提供 Configuration 字段,继承 AbpModule 的子类,可以直接调用或修改某个组件的Configuration 。
AbpModule:

调用/修改:

自定义模块配置
注册
以 IAbpWebCommonModuleConfiguration 为例:
定义 IAbpWebCommonModuleConfiguration 接口:

AbpWebCommonModule 中的 PreInitialize 方法注册实例:

获取
DictionaryBasedConfig 定义的 CustomSettings 就是最终保存自定义的module的Configuration的地方。

AbpStartupConfiguration 继承 DictionaryBasedConfig:

IModuleConfigurations 中定义 IAbpStartupConfiguration:

ModuleConfigurations 的实现:

AbpWebConfigurationExtensions 提供对 IModuleConfigurations 的扩展:

AbpStartupConfiguration 获取配置方法:

DictionaryBasedConfig中定义的方法:

使用 AbpWebConfigurationExtensions:

参考: