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

SOU*_*ser 7 delphi generics

本文所示,可以在C#中定义:

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

}
Run Code Online (Sandbox Code Playgroud)

但是,在Delphi中,以下代码无法编译并抱怨"E2003 Undeclared identifier:'MyTreeNode <>'":

type
    TMyTreeNode<T: TMyTreeNode<T>> = class
    end;
Run Code Online (Sandbox Code Playgroud)

正式术语似乎是"自我引用泛型约束".我想知道如何在Delphi中这样做?

PS:

David指出的另一篇有用的文章.

关于Delphi和协方差/逆变的相关SO帖子.

维基百科的co/contra-variance页面.

Dav*_*nan 2

Delphi 中没有办法表达这样的通用约束。此外,我相信没有类型安全的方法来实现在 C# 中可以通过这样的约束实现的目标。