delphi – 基于具体类型的泛型类的条件行为

由于我从 yesterday提出的问题可能还不完全清楚,我没有得到我想要的答案,所以我会尽量用更为一般的方式来制定:

有没有办法根据实例化的泛型类型的实际类型来实现特殊行为,使用Explicit条件语句或使用某种专业化?伪代码

TGenericType <T> = class
  function Func : Integer;
end;
...
function TGenericType <T>.Func : Integer;
begin
  if (T = String) then Exit (0);
  if (T is class) then Exit (1);
end;
...
function TGenericType <T : class>.Func : Integer;
begin
Result := 1;
end;
function TGenericType <String>.Func : Integer;
begin
Result := 0;
end;

解决方法

您可以通过使用TypeInfo(T)= TypeInfo(string)来回退到RTTI.要测试某些东西是一个类,可以使用像PTypeInfo(TypeInfo(T))^.Kind = tkClass这样的东西.

PTypeInfo类型和tkClass枚举成员在TypInfo单元中定义.

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...