如何在Delphi中使用自引用泛型约束定义类?

时间:2014-04-23 13:24:26

标签: delphi generics

如此article所示,可以在C#中定义:

public class MyTreeNode<T> where T: MyTreeNode<T>
{

}

但是,在Delphi中,以下代码无法编译和抱怨&#34; E2003未声明的标识符:&#39; MyTreeNode&lt;&gt;&#39;&#34;:

type
    TMyTreeNode<T: TMyTreeNode<T>> = class
    end;

正式术语似乎是"self-referencing generics constraint"。我想知道如何在Delphi中做到这一点?

PS:

Another useful article as David pointed out

Relevent SO post regarding Delphi and covariance / contravariance

Wikipedia page of co/contra-variance

1 个答案:

答案 0 :(得分:2)

Delphi无法表达这样的通用约束。此外,我认为没有类型安全的方法来实现具有这种约束的C#可以实现的目标。