如何枚举接口中的所有字符串属性?
How do I enumerate all string properties in an interface?
我想(如果可能的话)在如下所示的界面中枚举所有字符串属性:
IXMLDocumentSummaryType = interface(IXMLNode)
['{AD394EAD-1253-4CA5-9F0A-76122CB53D88}']
{ Property Accessors }
function Get_Uid: UnicodeString;
function Get_RsUid: UnicodeString;
//etc
{ Methods & Properties }
property Uid : UnicodeString read Get_Uid write Set_Uid;
property RsUid : UnicodeString read Get_RsUid write Set_RsUid;
property Meta : UnicodeString read Get_Meta write Set_Meta;
property Error : UnicodeString read Get_Error write Set_Error;
end;
有很多文本属性,我只对 43 个感兴趣。所以,我在静态数组中有这 43 个的名称。
Fields: array[0..42] of RSummary= (
(Name: 'RsUid' ; Value: ''),
(Name: 'GbUid' ; Value: ''),
etc...
);
现在我想枚举属性并自动将这些属性的值放入数组中。
我有 Delphi XE7.
我试过这个:
var
C: TRttiContext;
T: TRttiType;
F: TRttiField;
P: TRttiProperty;
begin
T:= C.GetType(IXMLDocumentSummaryType) <----- not working
接口属性与 class 属性有很大不同。接口只有方法,属性只是糖。
您不会获得接口属性的 RTTI,因为没有这样的 RTTI。
我想(如果可能的话)在如下所示的界面中枚举所有字符串属性:
IXMLDocumentSummaryType = interface(IXMLNode)
['{AD394EAD-1253-4CA5-9F0A-76122CB53D88}']
{ Property Accessors }
function Get_Uid: UnicodeString;
function Get_RsUid: UnicodeString;
//etc
{ Methods & Properties }
property Uid : UnicodeString read Get_Uid write Set_Uid;
property RsUid : UnicodeString read Get_RsUid write Set_RsUid;
property Meta : UnicodeString read Get_Meta write Set_Meta;
property Error : UnicodeString read Get_Error write Set_Error;
end;
有很多文本属性,我只对 43 个感兴趣。所以,我在静态数组中有这 43 个的名称。
Fields: array[0..42] of RSummary= (
(Name: 'RsUid' ; Value: ''),
(Name: 'GbUid' ; Value: ''),
etc...
);
现在我想枚举属性并自动将这些属性的值放入数组中。 我有 Delphi XE7.
我试过这个:
var
C: TRttiContext;
T: TRttiType;
F: TRttiField;
P: TRttiProperty;
begin
T:= C.GetType(IXMLDocumentSummaryType) <----- not working
接口属性与 class 属性有很大不同。接口只有方法,属性只是糖。
您不会获得接口属性的 RTTI,因为没有这样的 RTTI。