由于 Delphi 的限制,我有许多记录无法转换为类(它们都使用类运算符来实现比较)。但是我必须通过将它们存储在一个不知道我正在使用哪种记录类型的类中。
像这样的东西:
type R1 = record
begin
x :Mytype;
class operator Equal(a,b:R1)
end;
type R2 = record
begin
y :Mytype;
class operator Equal(a,b:R2)
end;
type Rn = record
begin
z :Mytype;
class operator Equal(a,b:Rn)
end;
type TC = class
begin
x : TObject;
y : Mytype;
function payload (n:TObject)
end;
function TC.payload(n:TObject)
begin
x := n;
end;
program:
c : TC;
x : R1;
y : R2;
...
c := TC.Create():
n:=TOBject(x);
c.payload(n);
现在,Delphi 不接受从记录到 TObject 的类型转换,由于 Delphi 的限制,我无法将它们设为类。
任何人都知道一种将不同记录传递给函数并在需要时识别它们的类型的方法,就像我们对类所做的那样:
if x is TMyClass then TMyClass(x) ...
???