是否可以使用RTTI在接口上获取GUID的值?

rho*_*ody 11 delphi rtti

如果我有一个界面,如:

IPluginAPI = interface
['{590DFF0B-CA00-46CC-84B0-3848103D4C5A}']
   function add (a : double; b : double) : double;
   function sub (a : double; b : double) : double;
   function mult (a : double; b : double) : double;
   function divide (a : double; b : double) : double;
end;
Run Code Online (Sandbox Code Playgroud)

无论如何使用RTTI获取GUID的值?我正在使用Delphi XE.

Ond*_*lle 22

uses
  TypInfo;

Guid := GetTypeData(TypeInfo(IPluginAPI))^.Guid;
Run Code Online (Sandbox Code Playgroud)

  • +1,另一个选项使用新的Rtti`TRttiInterfaceType(TRttiContext.Create.GetType(TypeInfo(IPluginAPI))).GUID` (7认同)
  • +1太糟糕了[文档](http://docwiki.embarcadero.com/VCL/en/TypInfo.TTypeData)到目前为止已经过时了....... (4认同)