【问题标题】:Is it possible to get the value of a GUID on an interface using RTTI?是否可以使用 RTTI 在接口上获取 GUID 的值?
【发布时间】:2012-01-16 09:02:42
【问题描述】:

如果我有这样的界面:

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;

有没有办法使用 RTTI 获取 GUID 的值?我正在使用 Delphi XE。

【问题讨论】:

    标签: delphi rtti


    【解决方案1】:
    uses
      TypInfo;
    
    Guid := GetTypeData(TypeInfo(IPluginAPI))^.Guid;
    

    【讨论】:

    • +1 太糟糕了,documentation 已经过时了......
    • 哇,该页面完全具有误导性。自我提醒:始终查看源代码。
    • @rhody :-) 欢迎,我很乐意提供帮助。
    • +1,另一个选项使用新的 Rtti TRttiInterfaceType(TRttiContext.Create.GetType(TypeInfo(IPluginAPI))).GUID
    【解决方案2】:

    正如 RRUZ 在对旧回复的评论中提到的那样:

    uses
      System.Rtti;
    
    //...
    var Guid := TRttiInterfaceType(TRttiContext.Create.GetType(TypeInfo(IPluginAPI))).GUID;
    
    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多