Rtti 单元(5): 获取方法的更多信息

转载 2011年01月09日 20:13:00

方法的更多信息是指: 方法类型、返回值、参数等.

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, StdCtrls; 
 
type 
 TForm1 = class(TForm) 
  Memo1: TMemo; 
  Button1: TButton; 
  procedure Button1Click(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
uses Rtti,TypInfo; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 ms: TArray<TRttiMethod>; 
 m: TRttiMethod; 
 mps: TArray<TRttiParameter>; 
 mp: TRttiParameter; 
begin 
 Memo1.Clear; 
 
 {先获取方法集合, 这里随便使用了 TButton 类} 
 ms := TRttiContext.Create.GetType(TButton).GetMethods; 
 for m in ms do 
 begin 
  {方法名称} 
  Memo1.Lines.Add('方法名称: ' + m.Name); 
 
  {方法类型: proceedure、function 等} 
  Memo1.Lines.Add('方法类型: ' + GetEnumName(TypeInfo(TMethodKind), Ord(m.MethodKind))); 
 
  {方法的返回值类型} 
  if Assigned(m.ReturnType) then 
   Memo1.Lines.Add('返回值: ' + GetEnumName(TypeInfo(TTypeKind), Ord(m.ReturnType.TypeKind))); 
 
  {方法的参数列表} 
  mps := m.GetParameters; 
  if Length(mps) > 0 then 
  begin 
   Memo1.Lines.Add('参数:'); 
   for mp in mps do Memo1.Lines.Add(mp.ToString); 
   //还可以通过 mp.ParamType 获取参数的数据类型 
   //还可以通过 mp.Flags 获取参数的修饰符(譬如 var、const 等) 
  end; 
 
  Memo1.Lines.Add(EmptyStr); 
 end; 
end; 
 
end.

CAS获取用户更多信息

配置SingleRowJdbcPersonAttributeDao 基于deployerConfigContext.xml配置文件,添加SingleRowJdbcPersonAttributeDao...
  • seven_zhao
  • seven_zhao
  • 2015年06月16日 16:39
  • 1658

C++11 | 运行时类型识别(RTTI)

C++11里的RTTI:type_info类,typeid操作符,type_index类
  • foruok
  • foruok
  • 2016年06月02日 17:49
  • 7243

运行时类型信息RTTI

我们在写C++代码的时候经常碰到使用dynamic_cast进行类型转换的情况,也都知道经过dynamic_cast的转换更加安全,因为dynamic_cast进行了类型检查。 但是可能很多人不知道d...
  • techx
  • techx
  • 2015年03月19日 18:45
  • 624

单点登录(十七)----cas4.2.x登录mongodb验证方式成功后返回更多信息更多属性到客户端

我们在之前已经完成了cas4.2.x登录使用mongodb验证方式登录成功了。也解决了登录名中使用中文乱码的问题。单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式...
  • q383965374
  • q383965374
  • 2017年02月15日 18:04
  • 1512

qt moc rtti 运行时类型识别

前面我们说过,Qt 不是使用的“标准的” C++ 语言,而是对其进行了一定程度的“扩展”。这里我们从Qt新增加的关键字就可以看出来:signals、slots 或者 emit。所以有人会觉得 Qt 的...
  • zhangbinsijifeng
  • zhangbinsijifeng
  • 2016年02月19日 08:34
  • 640

Java RTTI和反射的区别?

网上看到他们的区别是:如果不知道一个对象的准确类型,RTTI会帮助我们调查。但却有一个限制:类型必须是在编译期间已知的。而反射使我们能在运行期间探察一个类,RTTI和“反射”之间唯一的区别就是:对RT...
  • u011694328
  • u011694328
  • 2016年08月05日 18:19
  • 780

CAS登录后获取更多信息

CAS登录后获取更多信息cas-server-3.5.2 cas-server-4.0.0两个版本的配置文件差别还是很大的,本文仅做个笔记用。无详细描述。...
  • wangzhe1991919
  • wangzhe1991919
  • 2016年11月22日 09:22
  • 397

CAS SSO 4.0 单点登录返回更多用户信息

从cas server登录成功后,默认只能从cas server得到用户名。但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况。 cas client拿到用户名后再到数据库中...
  • carl_china
  • carl_china
  • 2015年10月15日 23:23
  • 3937

Java类型信息:RTTI

RTTI 1、RTTI(Run-Time Type Identification):在运行期间对类型进行检验的行为,运行时类型信息使得你可以在程序运行时发现和使用类型信息; 2、RTTI主要有两种...
  • Al_assad
  • Al_assad
  • 2016年10月31日 23:14
  • 179

CAS登录成功后返回更多信息

今天介绍下cas 3.4登录成  功返回用户更多信息。cas登录成功默认返回的只有用户名,  java客户端获取:   AttributePrincipal principal...
  • tianfei_1984
  • tianfei_1984
  • 2013年02月28日 16:49
  • 11672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Rtti 单元(5): 获取方法的更多信息
举报原因:
原因补充:

(最多只允许输入30个字)