delphi - 如何将接口(interface)变量分配给 Rtti.TValue 类型的变量

标签 delphi delphi-2010 rtti

目前试用delphi2010,发现Rtti Unit的TValue类型。 TValue 具有非常有趣的功能,但我找不到分配接口(interface)的方法。

我尝试以下操作

program Project1;
uses
  Classes, SysUtils, Rtti;
var
   list : IInterfaceList;
   value : TValue;
begin
  // all these assignments works
  value := 1;
  value := 'Hello';
  value := TObject.Create;

  // but nothing of these assignments works
  list := TInterfaceList.Create;
  value := list; // [DCC Fehler] Project1.dpr(15): E2010 incompatible types: 'TValue' and 'IInterfaceList'
  value.From[list]; // [DCC Fehler] Project1.dpr(16): E2531 Method 'From' requires explicit typarguments
  value.From<IInterfaceList>[list]; // [DCC Fehler] Project1.dpr(17): E2035 Not enough parameters
end.

我找不到任何进一步的信息。不在 Delphi 帮助系统中,也不在 Internet 上。我做错了什么?

最佳答案

您的最后一次尝试是最接近的。 TValue.From 是一个从参数创建 TValue 的类函数。您可能将方括号放在那里,因为 CodeInsight 就是这样显示的,对吧?这实际上是 CodeInsight 中的一个小故障;它针对基于泛型的函数执行此操作,您应该在其中使用括号。正确的语法如下所示:

Value := TValue.From<IInterfaceList>(list);

关于delphi - 如何将接口(interface)变量分配给 Rtti.TValue 类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385967/

相关文章:

c++ - 动态检测并执行类实例的某些方法

xml - 基于多个属性从 XML 中读取

database - 无法识别未声明的标识符数据库表

c# - Delphi 到 C# WinForms : Iterate through form components on form

Delphi - 桥接两个 TCP 端口

delphi - 如何将变量对象作为值参数传递

delphi - 如何获取自定义属性的属性类型名称?

c++ - 是否可以混淆 RTTI 数据?

delphi - 我的应用程序的表单如何使用不同的 Vcl 样式?

delphi - Delphi 7中如何去定义方法或过程?