As shown in this article, one can define in C#:
public class MyTreeNode<T> where T: MyTreeNode<T>
{
}
In Delphi, however, the following code does not compile and complains "E2003 Undeclared identifier: 'MyTreeNode<>'":
type
TMyTreeNode<T: TMyTreeNode<T>> = class
end;
The formal terminology seems to be "self-referencing generics constraint". I wonder how to do this in Delphi ?
PS:
Another useful article as David pointed out.
Relevent SO post regarding Delphi and covariance / contravariance.
Wikipedia page of co/contra-variance.
There is no way in Delphi to express such a generic constraint. Furthermore, I believe that there is no typesafe way to achieve what can be achieved in C# with such a constraint.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With