Link to a class from the class of general parameters

I have a persistence structure, and I'm trying to use generics, so I don't need to create new list classes for each type of object that I want to store in a safe way.

I have a method that returns the class of the contained object in the list class (so I know which queries to run and which object to create.

As an example, it looks something like this:

type

  TMyObject = class

  end;
  TMyObjectClass = class of TMyObject;


  TMyObjectList = class
  public
    function ListClass: TMyObjectClass; virtual; abstract;

  end;

  TMyObjectList<T: TMyObject, constructor> = class(TMyObjectList)
  public
    function ListClass: TMyObjectClass; override;

  end;

implementation

{ TMyObjectList<T> }

function TMyObjectList<T>.ListClass: TMyObjectClass;
begin
  result := T;  //  <==== this wont compile
end;

end.

Is there a way to return the class of the generic parameter in this case?

thanks

N @ (using Delphi 2009)

+3
source share
2 answers

Delphi 2009. ​​ 2010 . , ./p >

+6

T .

- :

result: = self;

, ...

0

Source: https://habr.com/ru/post/1717704/


All Articles