首页 > 其他分享 >rtti路由

rtti路由

时间:2023-06-16 20:46:47浏览次数:38  
标签:TFunc end ctx funcName className TValue rtti 路由

rtti路由

/// <author>2023-2-10</author> fit delphi\lazarus
unit api.router;
{$IFDEF fpc}
  {$MODE DELPHI}{$H+}
{$ENDIF}
interface

uses
  Classes, Rtti, StrUtils, SysUtils;

type
  /// <code>
  /// 基类
  /// </code>
  TFunc = class(TPersistent);

/// <summary>
/// 动态执行指定类的方法
/// </summary>
function RouterAPI(className, funcName: string; funcParam: array of TValue): TValue;

implementation

function FindAClass(const className: string): TClass;
begin
  result := nil;
  if className = '' then exit;
  result := TClass(Classes.FindClass(className));
end;

function RouterAPI(className, funcName: string; funcParam: array of TValue): TValue;
var ctx: TRttiContext;
  t: TRttiType;
  m: TRttiMethod;
  c: TClass;
  o: TFunc;
begin
  ctx := TRttiContext.Create;
  c := FindAClass(className);
  if c = nil then
  begin
    Writeln('还没有注册类: RegisterClass(TFunc1)');
    Exit;
  end;
  t := ctx.GetType(c);
  m := t.GetMethod(funcName);
  o := c.Create as TFunc;
  Result := m.Invoke(o, funcParam);
  ctx.Free;
  o.Free;
end;

end.

  

标签:TFunc,end,ctx,funcName,className,TValue,rtti,路由
From: https://www.cnblogs.com/hnxxcxg/p/17486459.html

相关文章

  • 非rtti路由
    非rtti路由///<author>2023-3-13</author>fitdelphi\lazarusunitapi.router;{$Idef.inc}interfaceusesmormot.net.ws.core,mormot.net.http,yn.log,Classes,StrUtils,SysUtils;type///<summary>///httpfunction///<......
  • 10.静态路由
    静态路由,无需消耗网络设备的CPU的资源来计算分析,但是静态路由需要网络管理员手动配置和维护,同时静态路由不能动态根据网络拓扑的改变而改变。静态路由格式:[***]iproute-static目标网段目标网段掩码下一跳ip地址根据直连路由的情况可知,数据不能全网互通,是因为路由表中缺少路......
  • 9、直连路由
    不同网段之间数据访问需要路由信息(路由表),路由就是通往目标的路径。路由表中有三种路由:直连路由、静态路由、动态路由。直连路由一半只要在路由器接口配上ip地址,物理与协议都是up状态就可建立,不需要网络人员维护,但是直连路由无法获取与其不直接相邻的路由信息。直连路由是所有路由......
  • 关于vue2路由跳转问题记录
    1.vue路由间跳转和新开窗口的方式(query,params)路由间跳转配置:query方式:参数会在url中显示this.$router.push({path:'路由地址',query:{msg:'helloworld'}})params方式:传参数据不会在导航栏中显示,需要配合路由的name属性使用。this.$......
  • 华为路由器、交换机、AC忘记密码,保留配置处理方法 密码恢复
    在不能通过telnet登录的情况下通过console线更改:通过BootROM清除Console口登录密码交换机的BootROM提供了清除Console口登录密码的功能,用户可以在交换机启动后修改Console口登录密码,然后保存配置。请按照如下步骤进行配置。第一步1.通过Console口连接交换机,......
  • Kong入门学习实践(4)负载均衡与正则路由
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习快速配置一个最常见的基本功能:负载均衡与正则路由。关于负载均衡所谓负载均衡,就是通过负载均衡算......
  • Neo4j中的网络路由
    人们使用Neo4j来管理企业架构。如果你还没有看到该演讲由托马斯·劳伦斯来自Amadeus的,那么你应该为自己观看。但是低层网络呢?我们可以使用Neo4j来建模物理网络中的路由吗?当然我们可以,今天我会告诉你如何。我们将保持简单,只需要路由器,交换机,接口和服务器。路由器之间将具有“ROUTE_T......
  • v3路由配置
    importtype{RouteRecordRaw}from'vue-router';importtype{App}from'vue';import{createRouter,createWebHistory}from'vue-router';import{basicRoutes}from'./routes';import{REDIRECT_NAME}from&#......
  • Kong入门学习实践(3)路由转发
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习快速配置一个最常见的基本功能:路由转发。关于路由转发路由转发是Nginx等代理软件最常见的使用场......
  • 路由守卫
    一、分类(1)全局守卫router.beforeEach全局前置守卫进入路由之前router.beforeResolve全局解析守卫(2.5.0+)在beforeRouteEnter调用之后调用router.afterEach全局后置钩子进入路由之后(2)路由独享守卫beforeEnter(3)路由组件内的守卫beforeRouteEnter进入......