【发布时间】:2012-02-14 01:38:45
【问题描述】:
我有一个 Delphi 泛型类,它公开了一个带有泛型类型参数的函数。在这个函数中,我需要将泛型类型的实例传递给另一个需要 Variant 类型的对象。类似这样:
type
IMyInterface = interface
DoStuff(Value: Variant);
end;
TMyClass<T> = class
FMyIntf: IMyInterface
procedure DoStuff(SomeValue: T);
end;
[...]
procedure MyClass<T>.DoStuff(SomeValue: T);
begin
FMyIntf.DoStuff((*convert SomeValue to Variant here*));
end;
我尝试使用 Rtti.TValue.From(SomeValue).AsVariant。这适用于整数类型,但适用于布尔值。我不太明白为什么,因为通常我可以将布尔值分配给 Variant...
有没有更好的方法来进行这种转换?我只需要它来处理简单的内置类型(不包括枚举和记录)
【问题讨论】:
-
您是否尝试过创建
Variant类型的局部变量,将SomeValue分配给它,然后将局部变量传递给FMyIntf.DoStuff()? -
是的。我不能这样做,因为没有从 'T' 到 'Variant' 的有效转换...
标签: delphi generics delphi-xe rtti variant