如何枚举接口中的所有字符串属性?

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。