ABP源码分析二十六:核心框架中的一些其他功能
2016-04-09 16:19
399 查看
本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能
AbpSession
AbpSession: 目前这个和CLR的Session没有什么直接的联系。当然可以自定义的去实现IAbpSession使之与CLR的Session关联
IAbpSession:定义如下图中的四个属性。
NullAbpSession:IAbpSession的一个缺省实现,给每个属性都给予null值,无实际作用
ClaimsAbpSession:实现了从ClaimsPrincipal/ClaimsIdentity中获取相应的claims,来完成IAbpSession中定义的属性的赋值。如果我们没有将自定义的IAbpSession实现register到ABP容器中的话,ABPkernelmodule会把ClaimsAbpSession注入到容器中。
Text
该模块就一个功能:实现string.format的反操作。比如一个字符串"My name is Neo." 和一个格式化器"My name is {name}."。 该模块通过FormattedStringValueExtracter的Extract方法可以将Neo提取出来。
核心的逻辑在两个方法中:
第一个,FormatStringTokenizer的Tokenize方法,这个方法将格式化器转换为一个List<FormatStringToken> 。以"My name is {name}."为例就是转化为{(Text="My name is",Type="ConstantText"),(Text="name",Type="DynamicValue")}
第二个,FormattedStringValueExtracter的Extract方法,使用上面得到的List<FormatStringToken>去匹配str,然后将结果存到ExtractResult中
Reflection
IAssemblyFinder: 定义一个接口返回所有的assemblies
CurrentDomainAssemblyFinder, 返回当前appdomain中的assemblies
WebAssemblyFinder:返回web应用程序的bin目录下的assemblies
ITypeFinder/TypeFinder:从所有的assemblies中找出需要的type
ReflectionHelper:封装了三个方法
返回ABP源码分析系列文章目录
AbpSession
AbpSession: 目前这个和CLR的Session没有什么直接的联系。当然可以自定义的去实现IAbpSession使之与CLR的Session关联
IAbpSession:定义如下图中的四个属性。
NullAbpSession:IAbpSession的一个缺省实现,给每个属性都给予null值,无实际作用
ClaimsAbpSession:实现了从ClaimsPrincipal/ClaimsIdentity中获取相应的claims,来完成IAbpSession中定义的属性的赋值。如果我们没有将自定义的IAbpSession实现register到ABP容器中的话,ABPkernelmodule会把ClaimsAbpSession注入到容器中。
Text
该模块就一个功能:实现string.format的反操作。比如一个字符串"My name is Neo." 和一个格式化器"My name is {name}."。 该模块通过FormattedStringValueExtracter的Extract方法可以将Neo提取出来。
核心的逻辑在两个方法中:
第一个,FormatStringTokenizer的Tokenize方法,这个方法将格式化器转换为一个List<FormatStringToken> 。以"My name is {name}."为例就是转化为{(Text="My name is",Type="ConstantText"),(Text="name",Type="DynamicValue")}
第二个,FormattedStringValueExtracter的Extract方法,使用上面得到的List<FormatStringToken>去匹配str,然后将结果存到ExtractResult中
Reflection
IAssemblyFinder: 定义一个接口返回所有的assemblies
CurrentDomainAssemblyFinder, 返回当前appdomain中的assemblies
WebAssemblyFinder:返回web应用程序的bin目录下的assemblies
ITypeFinder/TypeFinder:从所有的assemblies中找出需要的type
ReflectionHelper:封装了三个方法
返回ABP源码分析系列文章目录
相关文章推荐
- Android RecyclerView添加分隔线 DividerItemDecoration
- 发明家的原创时代
- 团队作业(一)
- HDU 4489 The King’s Ups and Downs (DP)
- 士兵杀敌(二) nyoj116
- WordPress主题 Music Pro 高级音乐/电台自适应音乐销售模板[更新至v3.1]
- JNI - Access an instance Field
- php实现基于微信公众平台开发SDK(demo)扩展的方法
- constraintWithItem:函数
- motto4
- [LeetCode] 196. Delete Duplicate Emails
- 10020---
- 一个小学生练习题 能实现基本的加减乘除
- 针对中科院java接口的使用方法和问题
- 在一个字符串中查找还有一个字符串出现的次数
- 在线webservice
- 浅谈KVC和KVO
- GCD详解
- 网络流
- Android 毛玻璃(高斯模糊) 开源控件。简单、快速、高效。(基于fastblur)