Delphi2009 反射机制的使用

news/2024/7/4 1:40:10 标签: delphi, integer, function, string, class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views"> Delphi2009中添加了一个用于实现反射的单元,即ObjAuto,用它可以轻松的实现反射。
对于原本的RTTI,只能够得到published区分符下的属性,而反射机制则可以得到拥有反射支持的类的公开方法,成员变量和属性。
下面是一个小例子:

首先写一个拥有反射支持的类,注意类必须继承自TPersistent,并且类声明带有MethodInfo编译预处理。
MethodInfo是一个全新的预处理指令,它标识了指定的类能否支持反射。

{$MethodInfo+}
type
TTestClass = class(TPersistent)
public
     procedure TestReflect(Astr: class="tags" href="/tags/STRING.html" title=string>string);
     class="tags" href="/tags/FUNCTION.html" title=function>function Test2: Integer;
end;
{$MethodInfo-}

然后我们写一点代码,用于获取类中的方法,注意必须要uses中添加ObjAuto单元
var
test : TTestClass;
mia : TMethodInfoArray;
mi : PMethodInfoHeader;
begin
test := TTestClass.Create;
try
    mia := ObjAuto.GetMethods(test.ClassType);
    for mi in mia do
      ShowMessage(mi^.Name);
finally
    test.Free;
end;
end;

这段代码即可把类中公开的方法都获取出来。如果有属性的话,也是一样。
获取到的方法,也可以进一步通过反射机制来调用。

http://www.niftyadmin.cn/n/1412816.html

相关文章

第18条:尽量使用不可变对象

1、设计类的时候,应充分运用属性来封装数据。 2、应该尽量把对外公布出来的属性设为只读,而且只在确有必要时才将属性对外公布。 3、若属性仅可于对象内部修改,则在“class-continuation分类”中将其由readonly属性扩展为readwrite属性。 这种…

用户体验设计笔记

听了用户体验设计部门的一场分享,简单记录一下交互设计的一些技巧。 交互设计小技巧 1、交互设计眼中的用户画像,主要面向三种用户 ● 聪明非常忙的新手用户。快速、无痛苦 三个层次:目标(动机)、任务、行动 ● 沉默…

Delphi2009初体验 - 语言篇 - 体验泛型(一)

快速导航&#xff1a; 一、概述 二、体验TList<T> 三、体验TObjectList<T> 四、TList<T>和TObjectList<T>的区别 五、后记 一、概述 等了几百年&#xff0c;Delphi终于原生的支持泛型了。以前使用Delphi&#xff0c;泛型是不被支持的&…

C# 监测每个方法的执行次数和占用时间(测试5)

又找到了一个bug 测试的类&#xff1a; public class Class11_1{ public virtual List<int> test2_1(List<tb_SensorRecordModel> SensorRecords){List<int> list new List<int>();for (int i 0, len SensorRecords.Count; i < len; i){v…

Linux下ll命令与ls -l

还大三Linux课的债。 1.ll命令用于显示当前文件下非隐藏文件的详情查询结果分为7栏&#xff1a;1&#xff09;如 -rw-r--r-- 表示三种用户对该文件的不同权限&#xff1a;r&#xff1a;可读&#xff1b;w&#xff1a;可写&#xff1b;x&#xff1a;可执行其中第一个字母表示&am…

页面嵌入第三方系统方案小结

1. 背景介绍 本文主要介绍页面嵌入到第三方系统的两个方案。分为三个步骤&#xff0c;页面嵌入、请求跨域、访问认证。 2. 页面嵌入方案 页面嵌入方案有 “iframe标签嵌入” 和 “SDK代码嵌入”。两种方案的灵活性和性能各不相同&#xff0c;下面介绍一下两者的差异。 2.1. if…

Delphi2009初体验 - 语言篇 - 体验泛型(二)

快速导航 六、体验泛型数组 七、体验泛型方法 八、体验自定义泛型类 九、体验泛型约束条件 1、类类型约束条件 2、对象类型约束条件 3、构造函数约束条件 4、值类型约束条件 5、多约束条件 6、多模板类型分别约束条件 7、嵌套约束条件 十、关于特化与偏特化 十一、 …

Java(2)

博客持续更新&#xff1a; 一.java中的for与while循环&#xff1a; 类似于C语言中的for循环&#xff0c;之前老师也说过相关方面的内容&#xff0c;这边的Java实质上是与C语言一样的&#xff0c;就不多阐述了&#xff0c;按照之前的规则与技巧使用while和for循环即可。for循环与…