ABP源码分析二十六:核心框架中的一些其余功能

本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能html

AbpSessionweb

AbpSession: 目前这个和CLR的Session没有什么直接的联系。固然能够自定义的去实现IAbpSession使之与CLR的Session关联app

IAbpSession:定义以下图中的四个属性。dom

NullAbpSession:IAbpSession的一个缺省实现,给每一个属性都给予null值,无实际做用源码分析

ClaimsAbpSession:实现了从ClaimsPrincipal/ClaimsIdentity中获取相应的claims,来完成IAbpSession中定义的属性的赋值。若是咱们没有将自定义的IAbpSession实现register到ABP容器中的话,ABPkernelmodule会把ClaimsAbpSession注入到容器中。spa

 

Text3d

该模块就一个功能:实现string.format的反操做。好比一个字符串"My name is Neo." 和一个格式化器"My name is {name}."。 该模块经过FormattedStringValueExtracter的Extract方法能够将Neo提取出来。orm

核心的逻辑在两个方法中:htm

第一个,FormatStringTokenizer的Tokenize方法,这个方法将格式化器转换为一个List<FormatStringToken> 。以"My name is {name}."为例就是转化为{(Text="My name is",Type="ConstantText"),(Text="name",Type="DynamicValue")}blog

第二个,FormattedStringValueExtracter的Extract方法,使用上面获得的List<FormatStringToken>去匹配str,而后将结果存到ExtractResult中

 

Reflection

IAssemblyFinder: 定义一个接口返回全部的assemblies

 

CurrentDomainAssemblyFinder, 返回当前appdomain中的assemblies

 

WebAssemblyFinder:返回web应用程序的bin目录下的assemblies

 

ITypeFinder/TypeFinder:从全部的assemblies中找出须要的type

 

ReflectionHelper:封装了三个方法

 

返回ABP源码分析系列文章目录

相关文章
相关标签/搜索