zoukankan      html  css  js  c++  java
  • ABP源码分析二十六:核心框架中的一些其他功能

    本文是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源码分析系列文章目录

  • 相关阅读:
    mysql锁表与解锁
    问题汇总
    安装一台Centos7桌面版的跳板机
    Centos7二进制部署k8s-v1.20.2 ipvs版本(部署mysql、nacos)
    Centos7二进制部署k8s-v1.20.2 ipvs版本(Prometheus监控k8s)
    CV2 安装异常
    PostgreSQL VACUUM 没有效果(无法清理死元组)的原因
    SQL Server 进程运行状态解析
    mysql 几种启动和关闭mysql服务的方法和区别
    MySQL学习(九)小结(转载)
  • 原文地址:https://www.cnblogs.com/1zhk/p/5371855.html
Copyright © 2011-2022 走看看