读书人

怎么取得一个类的所有Public和Publish

发布时间: 2012-03-13 11:21:11 作者: rapoo

如何取得一个类的所有Public和Published属性和方法列表?
如题.通过代码实现.

[解决办法]
不能吧。
[解决办法]
通过RTTI可以获得一个类的所有Published属性
var
mTypeInfo: PTypeInfo;
mTypeData: PTypeData;
mPropList: PPropList;
mPropInfo: PPropInfo;
mPropCount, i: Integer;
begin
mTypeInfo := Form1.ClassInfo;

mTypeData := GetTypeData(mTypeInfo);
if mTypeInfo^.Kind <> tkClass then Exit;

mPropCount := mTypeData^.PropCount;
if mPropCount <= 0 then Exit;

GetMem(mPropList, mPropCount * SizeOf(PPropList));
try
GetPropInfos(mTypeInfo, mPropList);
for i := 0 to mPropCount - 1 do
begin
mPropInfo := mPropList^[i];
ShowMessage(mPropInfo^.Name);
end;
finally
FreeMem(mPropList, mPropCount * SizeOf(PPropList));
end;
end;
[解决办法]
通过RTTI可以获得一个类的所有Published属性
var
mTypeInfo: PTypeInfo;
mTypeData: PTypeData;
mPropList: PPropList;
mPropInfo: PPropInfo;
mPropCount, i: Integer;
begin
mTypeInfo := Form1.ClassInfo;

mTypeData := GetTypeData(mTypeInfo);
if mTypeInfo^.Kind <> tkClass then Exit;

mPropCount := mTypeData^.PropCount;
if mPropCount <= 0 then Exit;

GetMem(mPropList, mPropCount * SizeOf(PPropList));
try
GetPropInfos(mTypeInfo, mPropList);
for i := 0 to mPropCount - 1 do
begin
mPropInfo := mPropList^[i];
ShowMessage(mPropInfo^.Name);
end;
finally
FreeMem(mPropList, mPropCount * SizeOf(PPropList));
end;
end;


利用VMt获取方法表.
[解决办法]
学习!

读书人网 >.NET

热点推荐