type
TGeneric<T> = class(TBase)
public
procedure Swap(Harry : T);
procedure NotifyAll(AParams : T);
end;
我有两个问题
如何在接受const数组的函数中传递泛型类型
Delphi - How can I pass Generic parameter to function that accept Array of const parameter
答案 0 :(得分:1)
有没有办法可以在
Variant
等任何其他类型中对一般变量进行类型转换。
正如我对您所链接问题的回答所述,适用于泛型的变体类型为TValue
。您可以使用TValue
方法从泛型类型创建From
实例:
procedure TMyClass.Foo<T>(const Item: T);
var
Value: TValue;
begin
Value := TValue.From<T>(Item);
end;
如何在接受
array of const
的函数中传递泛型类型?
这是question you linked to中提出的完全相同的问题。答案与那里所述的相同,即您不能将通用参数作为variant open array parameter传递。再次,TValue
来救援。不使用变量开放数组参数,而是使用TValue
的开放数组。
这里的底线是适用于泛型的变体类型,以及随Delphi RTL提供的变体类型TValue
。
答案 1 :(得分:0)
从链接问题复制我的代码:
procedure TEventMulticaster<T>.Notify(AUser: T);
var
ParametersAsTValueArray: array[1 .. 1] of TValue;
begin
ParametersAsTValueArray[1] := TValue.From<T>(AUser);
NotifyAll(TValueArrayToArrayOfConst(ParametersAsTValueArray));
end;